Skip to content

Commit

Permalink
handle close event together
Browse files Browse the repository at this point in the history
  • Loading branch information
ErBWs committed Feb 4, 2025
1 parent f763bfb commit 052b120
Showing 1 changed file with 1 addition and 68 deletions.
69 changes: 1 addition & 68 deletions lib/bean/appbar/sys_app_bar.dart
Original file line number Diff line number Diff line change
Expand Up @@ -41,73 +41,6 @@ class SysAppBar extends StatelessWidget implements PreferredSizeWidget {
this.bottom,
this.needTopOffset = true});

void _handleCloseEvent() {
final setting = GStorage.setting;
final exitBehavior =
setting.get(SettingBoxKey.exitBehavior, defaultValue: 2);

switch (exitBehavior) {
case 0:
exit(0);
case 1:
KazumiDialog.dismiss();
windowManager.hide();
break;
default:
KazumiDialog.show(builder: (context) {
bool saveExitBehavior = false; // 下次不再询问?

return AlertDialog(
title: const Text('退出确认'),
content: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
const Text('您想要退出 Kazumi 吗?'),
const SizedBox(height: 24),
StatefulBuilder(builder: (context, setState) {
onChanged(value) {
saveExitBehavior = value ?? false;
setState(() {});
}

return Wrap(
crossAxisAlignment: WrapCrossAlignment.center,
spacing: 8,
children: [
Checkbox(value: saveExitBehavior, onChanged: onChanged),
const Text('下次不再询问'),
],
);
}),
],
),
actions: [
TextButton(
onPressed: () async {
if (saveExitBehavior) {
await setting.put(SettingBoxKey.exitBehavior, 0);
}
exit(0);
},
child: const Text('退出 Kazumi')),
TextButton(
onPressed: () async {
if (saveExitBehavior) {
await setting.put(SettingBoxKey.exitBehavior, 1);
}
KazumiDialog.dismiss();
windowManager.hide();
},
child: const Text('最小化至托盘')),
const TextButton(
onPressed: KazumiDialog.dismiss, child: Text('取消')),
],
);
});
}
}

bool showWindowButton() {
return GStorage.setting
.get(SettingBoxKey.showWindowButton, defaultValue: false);
Expand All @@ -122,7 +55,7 @@ class SysAppBar extends StatelessWidget implements PreferredSizeWidget {
if (Utils.isDesktop()) {
// acs.add(IconButton(onPressed: () => windowManager.minimize(), icon: const Icon(Icons.minimize)));
if (!showWindowButton()) {
acs.add(CloseButton(onPressed: () => _handleCloseEvent()));
acs.add(CloseButton(onPressed: () => windowManager.close()));
}
acs.add(const SizedBox(width: 8));
}
Expand Down

0 comments on commit 052b120

Please sign in to comment.