|
@@ -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);
|