Showing
1 changed file
with
13 additions
and
6 deletions
@@ -16,7 +16,7 @@ import '../log/logger.dart'; | @@ -16,7 +16,7 @@ import '../log/logger.dart'; | ||
16 | class AutoTrackQueue { | 16 | class AutoTrackQueue { |
17 | static final AutoTrackQueue instance = AutoTrackQueue._(); | 17 | static final AutoTrackQueue instance = AutoTrackQueue._(); |
18 | 18 | ||
19 | - late Database database; | 19 | + Database? database; |
20 | Future<void> _lastTask = Future.value(); | 20 | Future<void> _lastTask = Future.value(); |
21 | 21 | ||
22 | void post(Future<void> Function() task) { | 22 | void post(Future<void> Function() task) { |
@@ -29,10 +29,16 @@ class AutoTrackQueue { | @@ -29,10 +29,16 @@ class AutoTrackQueue { | ||
29 | 29 | ||
30 | //异步任务 | 30 | //异步任务 |
31 | post(() async { | 31 | post(() async { |
32 | - database = await openTrackDatabase(); | 32 | + await _checkInitDataBase(); |
33 | }); | 33 | }); |
34 | } | 34 | } |
35 | 35 | ||
36 | + Future<void> _checkInitDataBase() async{ | ||
37 | + if (database != null) { | ||
38 | + database = await openTrackDatabase(); | ||
39 | + } | ||
40 | + } | ||
41 | + | ||
36 | Future<Database> openTrackDatabase() async { | 42 | Future<Database> openTrackDatabase() async { |
37 | final databasePath = await getDatabasesPath(); | 43 | final databasePath = await getDatabasesPath(); |
38 | final pathString = path.join(databasePath, 'track.db'); | 44 | final pathString = path.join(databasePath, 'track.db'); |
@@ -55,9 +61,9 @@ class AutoTrackQueue { | @@ -55,9 +61,9 @@ class AutoTrackQueue { | ||
55 | final httpClient = HttpClient(); | 61 | final httpClient = HttpClient(); |
56 | 62 | ||
57 | void appendQueue(TrackModel model) { | 63 | void appendQueue(TrackModel model) { |
58 | - if (database == null) return; | ||
59 | post(() async { | 64 | post(() async { |
60 | - await database.insert( | 65 | + await _checkInitDataBase(); |
66 | + await database!.insert( | ||
61 | "track", | 67 | "track", |
62 | Track(event: jsonEncode(model.toMap()), date: DateTime.now()) | 68 | Track(event: jsonEncode(model.toMap()), date: DateTime.now()) |
63 | .toMap()); | 69 | .toMap()); |
@@ -82,6 +88,7 @@ class AutoTrackQueue { | @@ -82,6 +88,7 @@ class AutoTrackQueue { | ||
82 | Future<void> flush() async { | 88 | Future<void> flush() async { |
83 | try { | 89 | try { |
84 | AutoTrackLogger.getInstance().debug("@@@start flush"); | 90 | AutoTrackLogger.getInstance().debug("@@@start flush"); |
91 | + await _checkInitDataBase(); | ||
85 | 92 | ||
86 | if (database == null) { | 93 | if (database == null) { |
87 | AutoTrackLogger.getInstance().debug('数据库未初始化,跳过 flush'); | 94 | AutoTrackLogger.getInstance().debug('数据库未初始化,跳过 flush'); |
@@ -90,7 +97,7 @@ class AutoTrackQueue { | @@ -90,7 +97,7 @@ class AutoTrackQueue { | ||
90 | 97 | ||
91 | final List<TrackModel> uploadList = []; | 98 | final List<TrackModel> uploadList = []; |
92 | 99 | ||
93 | - List<Map<String, dynamic>> events = await database.query("track", | 100 | + List<Map<String, dynamic>> events = await database!.query("track", |
94 | columns: ["id", "event", "date"], limit: 100); | 101 | columns: ["id", "event", "date"], limit: 100); |
95 | if (events.isEmpty) { | 102 | if (events.isEmpty) { |
96 | AutoTrackLogger.getInstance().debug("@@@events is empty"); | 103 | AutoTrackLogger.getInstance().debug("@@@events is empty"); |
@@ -251,7 +258,7 @@ class AutoTrackQueue { | @@ -251,7 +258,7 @@ class AutoTrackQueue { | ||
251 | } else { | 258 | } else { |
252 | //批量删除 | 259 | //批量删除 |
253 | for (var event in events) { | 260 | for (var event in events) { |
254 | - await database.delete("track", | 261 | + await database!.delete("track", |
255 | where: "id = ?", whereArgs: [event['id']]); | 262 | where: "id = ?", whereArgs: [event['id']]); |
256 | } | 263 | } |
257 | } | 264 | } |
-
Please register or login to post a comment