Skip to content

Commit

Permalink
Merge pull request #128 from mumu-lhl/migrate-sharedpreferences
Browse files Browse the repository at this point in the history
  • Loading branch information
mumu-lhl authored Jan 26, 2025
2 parents 0550afe + 99380b0 commit 73a8cf6
Show file tree
Hide file tree
Showing 5 changed files with 58 additions and 34 deletions.
2 changes: 1 addition & 1 deletion lib/database/app.dart
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,7 @@ class WordbookTagsDao extends DatabaseAccessor<AppDatabase>
}

Future<void> loadTagsOrder() async {
final order = prefs.getString('tagsOrder');
final order = prefs.getString("tagsOrder");
if (order == null) {
tagsOrder = [];
} else {
Expand Down
86 changes: 54 additions & 32 deletions lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@ import "dart:io";

import "package:ciyue/database/app.dart";
import "package:ciyue/dictionary.dart";
import "package:ciyue/pages/auto_export.dart";
import "package:ciyue/pages/main/main.dart";
import "package:ciyue/pages/manage_dictionaries/main.dart";
import "package:ciyue/pages/manage_dictionaries/properties.dart";
import "package:ciyue/pages/manage_dictionaries/settings_dictionary.dart";
import "package:ciyue/pages/webview_display.dart";
import "package:ciyue/settings.dart";
import "package:ciyue/widget/loading_dialog.dart";
import "package:ciyue/pages/auto_export.dart";
import "package:drift/drift.dart";
import "package:dynamic_color/dynamic_color.dart";
import "package:flutter/material.dart";
Expand All @@ -19,42 +19,36 @@ import "package:flutter_tts/flutter_tts.dart";
import "package:go_router/go_router.dart";
import "package:package_info_plus/package_info_plus.dart";
import "package:path/path.dart";
import "package:shared_preferences/shared_preferences.dart";
import "package:path_provider/path_provider.dart";

Future<void> _addDictionaries(List<FileSystemEntity> entities) async {
for (final entity in entities) {
if (entity is File) {
if (!entity.path.endsWith(".mdx")) continue;

try {
final path = setExtension(entity.path, "");
final tmpDict = Mdict(path: path);
if (await tmpDict.add()) {
await tmpDict.close();
}
// ignore: empty_catches
} catch (e) {}
} else {
final entities = await (entity as Directory).list().toList();
await _addDictionaries(entities);
}
}
}

Future<void> updateAllDictionaries() async {
final cacheDir = Directory(
join((await getApplicationCacheDirectory()).path, "dictionaries_cache"));
final entities = await cacheDir.list().toList();
await _addDictionaries(entities);
}
import "package:shared_preferences/shared_preferences.dart";
import "package:shared_preferences/util/legacy_to_async_migration_util.dart";
import "package:shared_preferences_platform_interface/types.dart";

void main() async {
WidgetsFlutterBinding.ensureInitialized();

driftRuntimeOptions.dontWarnAboutMultipleDatabases = true;

prefs = await SharedPreferences.getInstance();
const SharedPreferencesOptions sharedPreferencesOptions =
SharedPreferencesOptions();
final SharedPreferences legacyPrefs = await SharedPreferences.getInstance();
await migrateLegacySharedPreferencesToSharedPreferencesAsyncIfNecessary(
legacySharedPreferencesInstance: legacyPrefs,
sharedPreferencesAsyncOptions: sharedPreferencesOptions,
migrationCompletedKey: "migrationCompleted",
);

prefs = await SharedPreferencesWithCache.create(
cacheOptions: const SharedPreferencesWithCacheOptions(allowList: {
"currentDictionaryGroupId",
"exportDirectory",
"autoExport",
"exportFileName",
"autoRemoveSearchWord",
"language",
"themeMode",
"tagsOrder",
}));

int? groupId = prefs.getInt("currentDictionaryGroupId");
if (groupId == null) {
Expand Down Expand Up @@ -103,16 +97,17 @@ void main() async {
const platform = MethodChannel("org.eu.mumulhl.ciyue");

final DictGroupDao dictGroupDao = DictGroupDao(mainDatabase);

final DictionaryListDao dictionaryListDao = DictionaryListDao(mainDatabase);

late final FlutterTts flutterTts;
final HistoryDao historyDao = HistoryDao(mainDatabase);
final AppDatabase mainDatabase = appDatabase();
late final PackageInfo packageInfo;
late final SharedPreferences prefs;
late final SharedPreferencesWithCache prefs;
late final VoidCallback refreshAll;
final WordbookDao wordbookDao = WordbookDao(mainDatabase);
final WordbookTagsDao wordbookTagsDao = WordbookTagsDao(mainDatabase);

final _navigatorKey = GlobalKey<NavigatorState>();
final _router = GoRouter(
navigatorKey: _navigatorKey,
Expand Down Expand Up @@ -152,6 +147,33 @@ final _router = GoRouter(
],
);

Future<void> updateAllDictionaries() async {
final cacheDir = Directory(
join((await getApplicationCacheDirectory()).path, "dictionaries_cache"));
final entities = await cacheDir.list().toList();
await _addDictionaries(entities);
}

Future<void> _addDictionaries(List<FileSystemEntity> entities) async {
for (final entity in entities) {
if (entity is File) {
if (!entity.path.endsWith(".mdx")) continue;

try {
final path = setExtension(entity.path, "");
final tmpDict = Mdict(path: path);
if (await tmpDict.add()) {
await tmpDict.close();
}
// ignore: empty_catches
} catch (e) {}
} else {
final entities = await (entity as Directory).list().toList();
await _addDictionaries(entities);
}
}
}

class Dictionary extends StatefulWidget {
const Dictionary({super.key});

Expand Down
1 change: 1 addition & 0 deletions lib/pages/manage_dictionaries/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,7 @@ class _ManageDictionariesState extends State<ManageDictionaries> {
return Center(child: Text(AppLocalizations.of(context)!.empty));
} else {
return ReorderableListView(
buildDefaultDragHandles: false,
onReorder: (oldIndex, newIndex) async {
if (oldIndex < newIndex) {
newIndex -= 1;
Expand Down
2 changes: 1 addition & 1 deletion pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -843,7 +843,7 @@ packages:
source: hosted
version: "2.4.1"
shared_preferences_platform_interface:
dependency: transitive
dependency: "direct main"
description:
name: shared_preferences_platform_interface
sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80"
Expand Down
1 change: 1 addition & 0 deletions pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ dependencies:
url_launcher: ^6.3.1
file_selector: ^1.0.3
html_unescape: ^2.0.0
shared_preferences_platform_interface: ^2.4.1

dev_dependencies:
flutter_test:
Expand Down

0 comments on commit 73a8cf6

Please sign in to comment.