|
@@ -1,15 +1,21 @@
|
|
|
+import 'dart:convert';
|
|
|
+
|
|
|
import 'package:fis_common/logger/logger.dart';
|
|
|
import 'package:fis_measure/interfaces/date_types/rect.dart';
|
|
|
import 'package:fis_measure/interfaces/enums/display_mode.dart';
|
|
|
import 'package:fis_measure/interfaces/enums/visual_area_type.dart';
|
|
|
import 'package:fis_measure/interfaces/mode_names.dart';
|
|
|
+import 'package:fis_measure/values/strings.dart';
|
|
|
+import 'package:flutter/services.dart';
|
|
|
|
|
|
import 'section.dart';
|
|
|
import 'view_port.dart';
|
|
|
|
|
|
+/// 视图布局配置
|
|
|
class LayoutConfiguration {
|
|
|
static LayoutConfiguration? _instance;
|
|
|
|
|
|
+ /// 单例
|
|
|
static LayoutConfiguration get ins {
|
|
|
_instance ??= LayoutConfiguration();
|
|
|
return _instance!;
|
|
@@ -18,14 +24,31 @@ class LayoutConfiguration {
|
|
|
bool _loaded = false;
|
|
|
final List<LayoutSection> _layoutSections = [];
|
|
|
|
|
|
+ /// 是否已加载
|
|
|
bool get loaded => _loaded;
|
|
|
|
|
|
LayoutConfiguration();
|
|
|
|
|
|
- void loadData(List<dynamic> data) {
|
|
|
- if (_loaded) return;
|
|
|
+ /// 加载数据
|
|
|
+ Future<void> loadData() async {
|
|
|
+ try {
|
|
|
+ if (loaded) return;
|
|
|
+
|
|
|
+ String jsonText =
|
|
|
+ await rootBundle.loadString(MeasureStrings.LayoutConfigurationAsset);
|
|
|
+
|
|
|
+ final map = jsonDecode(jsonText);
|
|
|
+ final sections = map['LayoutSections'] as List<dynamic>;
|
|
|
+ _loadSections(sections);
|
|
|
+
|
|
|
+ _loaded = true;
|
|
|
+ } catch (e) {
|
|
|
+ logger.e("[Measure] init LayoutConfiguration error", e);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- for (final item in data) {
|
|
|
+ void _loadSections(List<dynamic> sections) {
|
|
|
+ for (final item in sections) {
|
|
|
final Map<String, dynamic> map = item;
|
|
|
_layoutSections.add(LayoutSection.fromJson(map));
|
|
|
}
|
|
@@ -33,9 +56,15 @@ class LayoutConfiguration {
|
|
|
throw ArgumentError(
|
|
|
"Layout configuration error: LayoutSection not found.");
|
|
|
}
|
|
|
- _loaded = true;
|
|
|
}
|
|
|
|
|
|
+ /// 获取 AreaType区域
|
|
|
+ ///
|
|
|
+ /// [section] 配置名
|
|
|
+ ///
|
|
|
+ /// [areaType] 区域类型
|
|
|
+ ///
|
|
|
+ /// [displayFormat] 显示模式
|
|
|
DRect getRect(
|
|
|
String section,
|
|
|
VisualAreaTypeEnum areaType,
|