112 lines
3.7 KiB
Dart
112 lines
3.7 KiB
Dart
|
import 'package:flutter/material.dart';
|
||
|
import 'package:shared_preferences/shared_preferences.dart';
|
||
|
|
||
|
// 예시: 설문 참여 버튼을 눌렀을 때 이동할 임시 설문 페이지
|
||
|
// 실제 구현에서는 SurveyPage를 만들어 사용하시면 됩니다.
|
||
|
class SurveyPage extends StatelessWidget {
|
||
|
const SurveyPage({Key? key}) : super(key: key);
|
||
|
|
||
|
@override
|
||
|
Widget build(BuildContext context) {
|
||
|
return Scaffold(
|
||
|
appBar: AppBar(
|
||
|
title: const Text('임시 설문 페이지'),
|
||
|
backgroundColor: Colors.black,
|
||
|
),
|
||
|
body: const Center(
|
||
|
child: Text('여기는 설문 페이지입니다 (임시).'),
|
||
|
),
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// 팝업(모달) 자체를 보여주는 함수
|
||
|
Future<void> showSurveyDialog(BuildContext context) async {
|
||
|
showDialog(
|
||
|
context: context,
|
||
|
barrierDismissible: false, // 바깥 영역 터치로 닫기 방지
|
||
|
builder: (_) => const SurveyDialog(),
|
||
|
);
|
||
|
}
|
||
|
|
||
|
/// 실제 AlertDialog 형태의 위젯
|
||
|
class SurveyDialog extends StatefulWidget {
|
||
|
const SurveyDialog({Key? key}) : super(key: key);
|
||
|
|
||
|
@override
|
||
|
State<SurveyDialog> createState() => _SurveyDialogState();
|
||
|
}
|
||
|
|
||
|
class _SurveyDialogState extends State<SurveyDialog> {
|
||
|
bool _todayNotSee = false; // "오늘 하루 보지 않기" 체크 여부
|
||
|
|
||
|
@override
|
||
|
Widget build(BuildContext context) {
|
||
|
return AlertDialog(
|
||
|
title: const Text('설문 참여 안내'),
|
||
|
content: SingleChildScrollView(
|
||
|
child: Column(
|
||
|
mainAxisSize: MainAxisSize.min,
|
||
|
children: [
|
||
|
const Text(
|
||
|
'안녕하세요, "올스코어" 앱을 이용해주셔서 감사합니다.\n\n'
|
||
|
'더 나은 서비스 제공을 위해 간단한 설문조사를 준비했습니다.\n'
|
||
|
'설문조사에 참여해주시면 앱 발전에 큰 도움이 됩니다!\n'
|
||
|
'(약 1분 소요)',
|
||
|
),
|
||
|
const SizedBox(height: 16),
|
||
|
// "오늘 하루 보지 않기" 체크박스
|
||
|
Row(
|
||
|
children: [
|
||
|
Checkbox(
|
||
|
value: _todayNotSee,
|
||
|
onChanged: (val) {
|
||
|
setState(() {
|
||
|
_todayNotSee = val ?? false;
|
||
|
});
|
||
|
},
|
||
|
),
|
||
|
const Text('오늘 하루 보지 않기'),
|
||
|
],
|
||
|
),
|
||
|
],
|
||
|
),
|
||
|
),
|
||
|
actions: [
|
||
|
// "닫기" 버튼
|
||
|
TextButton(
|
||
|
onPressed: () async {
|
||
|
// 오늘 하루 보지 않기를 체크했다면, SharedPreferences 저장
|
||
|
if (_todayNotSee) {
|
||
|
final prefs = await SharedPreferences.getInstance();
|
||
|
// 예: survey_popup_today = 'Y'
|
||
|
await prefs.setString('survey_popup_today', 'Y');
|
||
|
}
|
||
|
Navigator.pop(context); // 팝업 닫기
|
||
|
},
|
||
|
style: TextButton.styleFrom(backgroundColor: Colors.grey),
|
||
|
child: const Text('닫기', style: TextStyle(color: Colors.white)),
|
||
|
),
|
||
|
// "설문 참여" 버튼
|
||
|
TextButton(
|
||
|
onPressed: () async {
|
||
|
// 오늘 하루 보지 않기를 체크했다면, SharedPreferences 저장
|
||
|
if (_todayNotSee) {
|
||
|
final prefs = await SharedPreferences.getInstance();
|
||
|
await prefs.setString('survey_popup_today', 'Y');
|
||
|
}
|
||
|
Navigator.pop(context); // 팝업 닫고
|
||
|
// 임시 설문 페이지로 이동
|
||
|
Navigator.push(
|
||
|
context,
|
||
|
MaterialPageRoute(builder: (_) => const SurveyPage()),
|
||
|
);
|
||
|
},
|
||
|
style: TextButton.styleFrom(backgroundColor: Colors.black),
|
||
|
child: const Text('설문 참여', style: TextStyle(color: Colors.white)),
|
||
|
),
|
||
|
],
|
||
|
);
|
||
|
}
|
||
|
}
|