Browse Source

1、翻译加loadding

bakamaka.guan 2 years ago
parent
commit
ba373d9506

+ 139 - 0
lib/view/loadding/loadding.dart

@@ -0,0 +1,139 @@
+import 'dart:math';
+
+import 'package:fis_ui/index.dart';
+import 'package:flutter/material.dart';
+import 'package:fis_theme/theme.dart';
+
+class OuterPainter extends CustomPainter {
+  @override
+  void paint(Canvas canvas, Size size) {
+    ///canvas 是我们作画的画布,Size则是父widget给我们的画布大小
+    ///也可以通过CustomPaint的size属性指定,
+    ///其次如果CustomPaint的child不为空,这个size的值会与child大小有关
+    ///CustomPaint的size将被忽略
+    ///初始化一个画笔
+    Paint paint = Paint();
+    paint.color = FTheme.ins.colorScheme.primary;
+    paint.strokeWidth = 6;
+
+    ///画笔粗细
+    paint.isAntiAlias = true;
+
+    ///抗锯齿
+    paint.style = PaintingStyle.stroke;
+
+    ///默认是fill,我们不需要填充,选stroke
+    ///首先我们需要一个矩形,画布好根据这个矩形来确定圆的位置(这个圆是抽象的)
+    Rect rect = Rect.fromCircle(
+      center: Offset(size.width / 2, size.height / 2),
+      radius: size.width / 2,
+    );
+
+    /// drawArc 绘制一条弧线
+    /// 参数1 确定圆的矩形,
+    /// 参数2和3,分别是起始位置和扫过的角度,它原名是叫startAngle 和 sweepAngle,
+    /// 0.0从中心点到右侧0度 , 扫过pi/2 度 (90度),
+    /// 参数4(userCenter)false 只绘制一个弧线、如果是true,则会绘制一个扇形
+    /// 参数5 画笔
+    canvas.drawArc(rect, 0.0, pi / 2, false, paint);
+
+    ///因为是中心对称,所以我们将位置移动180度
+    canvas.drawArc(rect, pi, pi / 2, false, paint);
+  }
+
+  @override
+  bool shouldRepaint(CustomPainter oldDelegate) {
+    return false;
+
+    ///如果你的painter和一个动画绑定,理论上这里应是true(或者根据自己需要的值进行判断)表示需要重绘
+  }
+}
+
+class LoaddingOrErrorPage extends StatefulWidget implements FWidget {
+  const LoaddingOrErrorPage();
+  @override
+  State<StatefulWidget> createState() {
+    return LoaddingOrErrorPageState();
+  }
+}
+
+class LoaddingOrErrorPageState extends State<LoaddingOrErrorPage>
+    with TickerProviderStateMixin {
+  late AnimationController outerController, innerController;
+  late Animation<double> outerAnim, innerAnim;
+
+  @override
+  void dispose() {
+    outerController.dispose();
+    innerController.dispose();
+    super.dispose();
+  }
+
+  @override
+  void initState() {
+    super.initState();
+    outerController = AnimationController(
+        vsync: this, duration: const Duration(milliseconds: 3000));
+    innerController = AnimationController(
+        vsync: this, duration: const Duration(milliseconds: 2000));
+
+    outerAnim = Tween(begin: 0.0, end: 2.0).animate(outerController);
+    innerAnim = Tween(begin: 1.0, end: 0.0).animate(innerController);
+    innerController.addStatusListener((status) {
+      if (status == AnimationStatus.completed) {
+        innerController.reset();
+        innerController.forward();
+      } else if (status == AnimationStatus.dismissed) {
+        innerController.forward();
+      } else if (status == AnimationStatus.forward) {
+      } else if (status == AnimationStatus.reverse) {}
+    });
+    outerController.addStatusListener((status) {
+      if (status == AnimationStatus.completed) {
+        outerController.reset();
+        outerController.forward();
+      } else if (status == AnimationStatus.dismissed) {
+        outerController.forward();
+      } else if (status == AnimationStatus.forward) {
+      } else if (status == AnimationStatus.reverse) {}
+    });
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    if (!outerController.isAnimating) outerController.forward();
+    if (!innerController.isAnimating) innerController.forward();
+    return Container(
+      child: Column(
+        mainAxisAlignment: MainAxisAlignment.center,
+        children: <Widget>[
+          Stack(
+            alignment: Alignment.center,
+            children: <Widget>[
+              RotationTransition(
+                turns: outerAnim,
+                child: SizedBox(
+                  width: 150,
+                  height: 150,
+                  child: CustomPaint(
+                    painter: OuterPainter(),
+                  ),
+                ),
+              ),
+              RotationTransition(
+                turns: innerAnim,
+                child: SizedBox(
+                  width: 136,
+                  height: 136,
+                  child: CustomPaint(
+                    painter: OuterPainter(),
+                  ),
+                ),
+              ),
+            ],
+          ),
+        ],
+      ),
+    );
+  }
+}

+ 2 - 0
lib/view/measure/measure_config/measure_configuation_page.dart

@@ -173,6 +173,8 @@ class _MeasureConfigurationDialogState
           fontSize: 18,
         ),
       ),
+      cancelString: i18nBook.common.cancel.t,
+      okString: i18nBook.common.confirm.t,
       isDefault: true,
       onOk: () {
         submit();

+ 2 - 0
lib/view/measure/measure_config/widgets/has_selected_setting_dialog.dart

@@ -29,6 +29,8 @@ class HasSelectedSettingDialog extends FStatelessWidget {
       onOk: () {
         Get.back();
       },
+      cancelString: i18nBook.common.cancel.t,
+      okString: i18nBook.common.confirm.t,
       onCancel: () {
         Get.back();
       },

+ 2 - 0
lib/view/measure/measure_config/widgets/measure_configuration_style.dart

@@ -57,6 +57,8 @@ class PatternDialog extends StatelessWidget {
         ),
       ),
       isDefault: true,
+      cancelString: i18nBook.common.cancel.t,
+      okString: i18nBook.common.confirm.t,
       onOk: () {
         _saveMeasureSystemSettingAsync();
         Get.back();

+ 16 - 12
lib/view/measure/measure_main_view.dart

@@ -40,6 +40,7 @@ import 'package:fis_measure/view/gesture/mouse_gesture.dart';
 import 'package:fis_measure/view/pause/pause_panel.dart';
 import 'package:fis_measure/view/player/controller.dart';
 import 'package:fis_measure/view/player/player.dart';
+import 'package:fis_measure/view/loadding/loadding.dart';
 
 class MeasureMainView extends StatefulWidget implements FWidget {
   const MeasureMainView({Key? key}) : super(key: key);
@@ -276,6 +277,8 @@ class _MeasureMainViewState extends State<MeasureMainView> {
         ),
       ),
       isDefault: true,
+      cancelString: i18nBook.common.cancel.t,
+      okString: i18nBook.common.confirm.t,
       onOk: () {
         standardLineCalibrationController!.confirmEdit(calibrationLine);
         Get.back();
@@ -460,7 +463,7 @@ class _MeasureMainViewState extends State<MeasureMainView> {
         FMouseRegion(
           child: FContainer(
             width: double.infinity,
-            height: double.infinity,
+            // height: double.infinity,
             color: Colors.white.withOpacity(0.01),
             child: const FSizedBox(),
           ),
@@ -471,18 +474,19 @@ class _MeasureMainViewState extends State<MeasureMainView> {
               vertical: 20,
               horizontal: 40,
             ),
-            decoration: BoxDecoration(
-              border: Border.all(
-                color: Colors.grey,
-              ),
-              borderRadius: BorderRadius.circular(4),
-            ),
-            child: FText(
-              title!.isNotEmpty ? title : '加载失败',
-              style: const TextStyle(
-                color: Colors.white,
+            child: FStack(children: [
+              FCenter(
+                child: FText(
+                  title!.isNotEmpty ? title : '加载失败',
+                  style: const TextStyle(
+                    color: Colors.white,
+                  ),
+                ),
               ),
-            ),
+              const FCenter(
+                child: LoaddingOrErrorPage(),
+              )
+            ]),
           ),
         ),
       ],

+ 3 - 1
lib/view/mobile_view/mobile_measure_main_view.dart

@@ -267,6 +267,8 @@ class _MobileMeasureMainViewState extends State<MobileMeasureMainView> {
         ),
       ),
       isDefault: true,
+      cancelString: i18nBook.common.cancel.t,
+      okString: i18nBook.common.confirm.t,
       onOk: () {
         standardLineCalibrationController!.confirmEdit(calibrationLine);
         Get.back();
@@ -351,7 +353,7 @@ class _MobileMeasureMainViewState extends State<MobileMeasureMainView> {
   @override
   Widget build(BuildContext context) {
     MeasureCanvasExt.setFontFamily(
-        Theme.of(context).textTheme.button?.fontFamily);
+        Theme.of(context).textTheme.labelLarge?.fontFamily);
     bool canShowAI = [
       DiagnosisConclusionEnum.Benign,
       DiagnosisConclusionEnum.Malignant,