Quellcode durchsuchen

adjust layout config

melon.yin vor 2 Jahren
Ursprung
Commit
e95cdfe006

BIN
assets/default.VID


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 365
assets/layout.json


BIN
assets/test.jpg


+ 2 - 0
lib/main.dart

@@ -1,5 +1,6 @@
 import 'dart:ui';
 import 'package:fis_measure/measure_page_test.dart';
+import 'package:fis_measure/process/layout/configuration.dart';
 import 'package:fis_measure/view/measure/measure_view.dart';
 import 'package:flutter/material.dart';
 import 'package:get/get.dart';
@@ -8,6 +9,7 @@ import 'package:fis_i18n/i18n.dart';
 void main() async {
   WidgetsFlutterBinding.ensureInitialized();
   await _initI18n();
+  await LayoutConfiguration.ins.loadData();
   runApp(const MyApp());
 }
 

+ 33 - 4
lib/interfaces/process/layout/configuration.dart → lib/process/layout/configuration.dart

@@ -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,

+ 3 - 0
lib/interfaces/process/layout/section.dart → lib/process/layout/section.dart

@@ -4,7 +4,10 @@ class LayoutSection {
   String _name = '';
   List<LayoutUnit>? _layouts;
 
+  /// 名称
   String get name => _name;
+
+  /// 各模式布局单元
   List<LayoutUnit> get layouts => _layouts ?? const [];
 
   LayoutSection();

+ 0 - 0
lib/interfaces/process/layout/unit.dart → lib/process/layout/unit.dart


+ 0 - 0
lib/interfaces/process/layout/view_port.dart → lib/process/layout/view_port.dart


+ 5 - 0
lib/values/strings.dart

@@ -0,0 +1,5 @@
+// ignore_for_file: constant_identifier_names
+
+class MeasureStrings {
+  static const LayoutConfigurationAsset = "assets/layout.json";
+}

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.