Przeglądaj źródła

新增mock入口,防止应用时报错

loki.wu 1 rok temu
rodzic
commit
625e5ebde3
1 zmienionych plików z 16 dodań i 5 usunięć
  1. 16 5
      lib/theme.dart

+ 16 - 5
lib/theme.dart

@@ -1,8 +1,11 @@
 library fis_theme;
 
+import 'dart:convert';
+
 import 'package:fis_common/helpers/color.dart';
 import 'package:fis_common/logger/logger.dart';
 import 'package:flutter/material.dart';
+import 'package:flutter/services.dart';
 import 'package:flutter/widgets.dart';
 
 import 'locale_setting.dart';
@@ -127,10 +130,10 @@ abstract class FTheme {
   }
 
   /// 切换主题
-  Future<bool> switchTheme([String? name]) async {
+  Future<bool> switchTheme([String? name, bool isMock = false]) async {
     bool loaded = true;
     if (name != null) {
-      loaded = await loadManifestInfo(name);
+      loaded = await loadManifestInfo(name, isMock);
     } else {
       name = this.data.name;
     }
@@ -144,10 +147,18 @@ abstract class FTheme {
 
   /// 加载主题清单
   @protected
-  Future<bool> loadManifestInfo([String? name]) async {
+  Future<bool> loadManifestInfo([String? name, bool isMock = false]) async {
     try {
-      FThemeManifestInfo? manifestInfo =
-          await getThemeLoader(name ?? defaultName).load();
+      FThemeManifestInfo? manifestInfo;
+
+      if (isMock) {
+        var manifestJson =
+            await rootBundle.loadString('assets/manifestInfo.json');
+        manifestInfo = FThemeManifestInfo.fromJson(jsonDecode(manifestJson));
+      } else {
+        manifestInfo = await getThemeLoader(name ?? defaultName).load();
+      }
+
       if (manifestInfo != null) {
         _manifestInfo = manifestInfo;
         fRootBundle.init(manifestInfo);