83 lines
2.2 KiB
Dart
83 lines
2.2 KiB
Dart
// lib/widgets/helper_dialog.dart
|
|
import 'package:flutter/material.dart';
|
|
import 'package:get/get.dart';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
|
|
class HelperDialog extends StatefulWidget {
|
|
final String message;
|
|
final String screenKey;
|
|
|
|
const HelperDialog({super.key, required this.message, required this.screenKey});
|
|
|
|
@override
|
|
_HelperDialogState createState() => _HelperDialogState();
|
|
}
|
|
|
|
class _HelperDialogState extends State<HelperDialog> {
|
|
bool _doNotShowAgain = false;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return AlertDialog(
|
|
title: const Row(
|
|
children: [
|
|
Icon(Icons.help_outline, color: Colors.blue),
|
|
SizedBox(width: 10),
|
|
Text('ヘルプ'),
|
|
],
|
|
),
|
|
content: SingleChildScrollView(
|
|
child: Column(
|
|
mainAxisSize: MainAxisSize.min,
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: [
|
|
Text(widget.message),
|
|
const SizedBox(height: 20),
|
|
Row(
|
|
children: [
|
|
Checkbox(
|
|
value: _doNotShowAgain,
|
|
onChanged: (value) {
|
|
setState(() {
|
|
_doNotShowAgain = value!;
|
|
});
|
|
},
|
|
),
|
|
const Flexible(
|
|
child: Text(
|
|
'この画面を二度と表示しない',
|
|
overflow: TextOverflow.ellipsis,
|
|
),
|
|
),
|
|
],
|
|
),
|
|
],
|
|
),
|
|
),
|
|
actions: [
|
|
TextButton(
|
|
child: const Text('OK'),
|
|
onPressed: () async {
|
|
if (_doNotShowAgain) {
|
|
final prefs = await SharedPreferences.getInstance();
|
|
await prefs.setBool('helper_${widget.screenKey}', false);
|
|
}
|
|
Get.back();
|
|
},
|
|
),
|
|
],
|
|
);
|
|
}
|
|
}
|
|
|
|
// ヘルパー画面を表示する関数
|
|
Future<void> showHelperDialog(String message, String screenKey) async {
|
|
final prefs = await SharedPreferences.getInstance();
|
|
final showHelper = prefs.getBool('helper_$screenKey') ?? true;
|
|
if (showHelper) {
|
|
Get.dialog(
|
|
HelperDialog(message: message, screenKey: screenKey),
|
|
barrierDismissible: false,
|
|
);
|
|
}
|
|
} |