Skip to content

Commit f565c66

Browse files
Merge branch 'main' into feat/add_logger
2 parents b7ce895 + 6529061 commit f565c66

File tree

3 files changed

+44
-59
lines changed

3 files changed

+44
-59
lines changed

lib/funcs/noification.dart

Lines changed: 38 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -7,34 +7,19 @@ import 'package:workmanager/workmanager.dart';
77
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
88
import 'package:arabic_learning/package_replacement/storage.dart';
99

10-
Future<FlutterLocalNotificationsPlugin?> initNotifications() async {
10+
@pragma('vm:entry-point')
11+
Future<FlutterLocalNotificationsPlugin?> initNotificationsBackground() async {
1112
// 基础设置
1213
const AndroidInitializationSettings initializationSettingsAndroid =
1314
AndroidInitializationSettings('@mipmap/launcher_icon'); // 应用图标
1415

15-
final DarwinInitializationSettings initializationSettingsIOS =
16-
DarwinInitializationSettings(
17-
requestAlertPermission: false,
18-
requestBadgePermission: false,
19-
requestSoundPermission: false,
20-
);
21-
2216
final InitializationSettings initializationSettings = InitializationSettings(
2317
android: initializationSettingsAndroid,
24-
iOS: initializationSettingsIOS,
2518
);
2619

2720
// 通知接口
2821
FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();
29-
30-
await flutterLocalNotificationsPlugin.initialize(
31-
initializationSettings,
32-
onDidReceiveNotificationResponse: (NotificationResponse response) {
33-
(response) {
34-
return;
35-
};
36-
},
37-
);
22+
await flutterLocalNotificationsPlugin.initialize(initializationSettings);
3823

3924
// 通知渠道
4025
const AndroidNotificationChannel channel = AndroidNotificationChannel(
@@ -55,44 +40,44 @@ Future<FlutterLocalNotificationsPlugin?> initNotifications() async {
5540
return flutterLocalNotificationsPlugin;
5641
}
5742

43+
@pragma('vm:entry-point')
44+
Future<bool> sendNotification() async {
45+
FlutterLocalNotificationsPlugin? localNotificationPlugin = await initNotificationsBackground();
46+
if(localNotificationPlugin == null) return Future.value(false);
47+
48+
final SharedPreferences prefs = await SharedPreferences.getInstance();
49+
final String? configText = prefs.getString("settingData");
50+
if(configText == null) return Future.value(false);
51+
final Config config = Config.buildFromMap(jsonDecode(configText));
52+
53+
// 如果当天连胜续了就不通知
54+
if(config.learning.lastDate == DateTime.now().difference(DateTime(2025, 11, 1)).inDays) return Future.value(true);
55+
// 起床前不通知
56+
if(DateTime.now().hour < 7) return Future.value(true);
57+
58+
const androidDetails = AndroidNotificationDetails(
59+
'learning_notification_channel',
60+
'学习通知',
61+
channelDescription: '用于学习提醒的后台通知',
62+
importance: Importance.high,
63+
priority: Priority.high,
64+
);
65+
const notificationDetails = NotificationDetails(android: androidDetails);
66+
67+
final Random rnd = Random();
68+
await localNotificationPlugin.show(
69+
rnd.nextInt(9999),
70+
'学习提醒',
71+
StaticsVar.learningMessage[rnd.nextInt(StaticsVar.learningMessage.length)],
72+
notificationDetails,
73+
);
74+
return Future.value(true);
75+
}
76+
5877
// 独立 Isolate 后台任务
78+
@pragma('vm:entry-point')
5979
void callbackDispatcher() {
6080
Workmanager().executeTask((task, inputData) async {
6181
return await sendNotification();
6282
});
63-
}
64-
65-
Future<bool> sendNotification() async {
66-
FlutterLocalNotificationsPlugin? localNotificationPlugin = await initNotifications();
67-
if(localNotificationPlugin == null) return Future.value(false);
68-
69-
final SharedPreferences prefs = await SharedPreferences.getInstance();
70-
final String? configText = prefs.getString("settingData");
71-
if(configText == null) return Future.value(false);
72-
final Config config = Config.buildFromMap(jsonDecode(configText));
73-
74-
// 如果当天连胜续了就不通知
75-
if(config.learning.lastDate == DateTime.now().difference(DateTime(2025, 11, 1)).inDays) return Future.value(true);
76-
// 起床前不通知
77-
if(DateTime.now().hour < 7) return Future.value(true);
78-
79-
80-
const androidDetails = AndroidNotificationDetails(
81-
'learning_notification_channel',
82-
'学习通知',
83-
channelDescription: '用于学习提醒的后台通知',
84-
importance: Importance.high,
85-
priority: Priority.high,
86-
);
87-
const notificationDetails = NotificationDetails(android: androidDetails);
88-
89-
final Random rnd = Random();
90-
await localNotificationPlugin.show(
91-
rnd.nextInt(9999),
92-
'学习提醒',
93-
StaticsVar.learningMessage[rnd.nextInt(StaticsVar.learningMessage.length)],
94-
notificationDetails,
95-
);
96-
97-
return Future.value(true);
9883
}

lib/main.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ import 'package:logging/logging.dart';
1212

1313
import 'package:arabic_learning/funcs/ui.dart';
1414
import 'package:arabic_learning/funcs/utili.dart';
15-
import 'package:arabic_learning/vars/global.dart';
16-
import 'package:arabic_learning/vars/license_storage.dart';
17-
import 'package:arabic_learning/vars/statics_var.dart';
15+
import 'package:arabic_learning/vars/global.dart' show Global;
16+
import 'package:arabic_learning/vars/license_storage.dart' show LicenseVars;
17+
import 'package:arabic_learning/vars/statics_var.dart' show StaticsVar;
1818
import 'package:arabic_learning/pages/home_page.dart';
1919
import 'package:arabic_learning/pages/learning_page.dart'show LearningPage;
2020
import 'package:arabic_learning/pages/setting_page.dart'show SettingPage;
@@ -38,7 +38,7 @@ void main() async {
3838
Workmanager().registerPeriodicTask(
3939
"dynamic-notification-task",
4040
"fetchAndShowNotification",
41-
frequency: Duration(minutes: 15),
41+
frequency: Duration(minutes: 30),
4242
constraints: Constraints(),
4343
);
4444
}

lib/vars/statics_var.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ class StaticsVar {
1919
"友情提示:今日的学习KPI已完成 0%,是时候启动“填鸭”程序了!",
2020
"你的阴性、阳性、单数、双数、复数... 你都记清楚了吗?",
2121
"«هل تتذكر ما تعلمته بالأمس؟» ",
22-
"«إن شاء الله» 你今天会完成学习任务的,对吧?"
23-
"听说,在沙漠的另一边,有一课书在等你翻开..."
22+
"«إن شاء الله» 你今天会完成学习任务的,对吧?",
23+
"听说,在沙漠的另一边,有一课书在等你翻开...",
2424
"..."
2525
];
2626
static const List<MaterialColor> themeList = [

0 commit comments

Comments
 (0)