Эх сурвалжийг харах

初步完成最小可用demo

gavin.chen 2 жил өмнө
parent
commit
40e86cec3c

+ 2 - 14
README.md

@@ -1,16 +1,4 @@
 # vid_player_demo
 
-A new Flutter project.
-
-## Getting Started
-
-This project is a starting point for a Flutter application.
-
-A few resources to get you started if this is your first Flutter project:
-
-- [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab)
-- [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook)
-
-For help getting started with Flutter, view our
-[online documentation](https://flutter.dev/docs), which offers tutorials,
-samples, guidance on mobile development, and a full API reference.
+vid 播放器最小 demo  
+需搭配 fis_lib_vid 的 gavin_vid_player_demo_0802 分支食用

+ 17 - 6
lib/main.dart

@@ -1,4 +1,8 @@
+import 'package:fis_common/index.dart';
+import 'package:fis_vid/common/env.dart';
 import 'package:flutter/material.dart';
+import 'package:vid_player_demo/pages/single_image.dart/view.dart';
+import 'package:vid_player_demo/widgets/image_cache.dart';
 
 import 'pages/canvas_player/view.dart';
 import 'pages/image_player/view.dart';
@@ -9,7 +13,6 @@ void main() {
 
 class MyApp extends StatelessWidget {
   const MyApp({Key? key}) : super(key: key);
-
   @override
   Widget build(BuildContext context) {
     return MaterialApp(
@@ -19,9 +22,10 @@ class MyApp extends StatelessWidget {
       ),
       routes: <String, WidgetBuilder>{
         '/': (BuildContext context) =>
-            const MyHomePage(title: 'Flutter Demo Home Page'),
-        '/image': (BuildContext context) => const ImagePlayerView(),
-        '/canvas': (BuildContext context) => const CanvasPlayerView(),
+            const MyHomePage(title: 'Vid Player Demo Home Page'),
+        '/single_image': (BuildContext context) => const SingleImageView(),
+        '/image_player': (BuildContext context) => const ImagePlayerView(),
+        '/canvas_player': (BuildContext context) => const CanvasPlayerView(),
       },
       debugShowCheckedModeBanner: false,
     );
@@ -48,14 +52,21 @@ class _MyHomePageState extends State<MyHomePage> {
         child: Column(
           mainAxisAlignment: MainAxisAlignment.start,
           children: <Widget>[
+            const ShowImageCache(),
             const SizedBox(height: 24),
             ElevatedButton(
-                onPressed: () => Navigator.pushNamed(context, '/image'),
+              child: const Text('Single Image'),
+              onPressed: () => Navigator.pushNamed(context, '/single_image'),
+            ),
+            const SizedBox(height: 8),
+            ElevatedButton(
+                onPressed: () => Navigator.pushNamed(context, '/image_player'),
                 child: const Text('Image Player')),
             const SizedBox(height: 8),
             ElevatedButton(
-                onPressed: () => Navigator.pushNamed(context, '/canvas'),
+                onPressed: () => Navigator.pushNamed(context, '/canvas_player'),
                 child: const Text('Canvas Player')),
+            const SizedBox(height: 24),
           ],
         ),
       ),

+ 55 - 8
lib/pages/canvas_player/view.dart

@@ -1,24 +1,70 @@
+import 'package:fis_measure/view/player/control_board/control_board.dart';
+import 'package:fis_measure/view/player/controller.dart';
+import 'package:fis_measure/view/player/player.dart';
 import 'package:flutter/material.dart';
 
+import 'package:fis_vid/data_host/data_host.dart';
+
 class CanvasPlayerView extends StatefulWidget {
   const CanvasPlayerView({Key? key}) : super(key: key);
 
   @override
-  _CanvasPlayerViewState createState() => _CanvasPlayerViewState();
+  State<StatefulWidget> createState() => _CanvasPlayerViewState();
 }
 
 class _CanvasPlayerViewState extends State<CanvasPlayerView> {
+  late final _dataHost = VidDataHost(
+      "http://cdn-bj.fis.plus/093BE20682B14BFB95D811F221A2B2FD.vid");
+  late final _playerController = VidPlayerController(dataHost: _dataHost);
+
   @override
   Widget build(BuildContext context) {
+    // _playerController.load().then((value) {
+    //   _playerController.play();
+    // });
+    return FutureBuilder(
+      future: _playerController.load(),
+      builder: (context, snapshot) {
+        if (snapshot.connectionState == ConnectionState.done) {
+          if (_playerController.canPlay) {
+            _playerController.play();
+            return buildPage(context);
+          } else {
+            return const Material(child: Center(child: Text("Load fail")));
+          }
+        } else {
+          return const Material(
+              child: Center(child: CircularProgressIndicator()));
+        }
+      },
+    );
+  }
+
+  Widget buildPage(BuildContext context) {
+    // const borderSide = BorderSide(color: Colors.grey);
+    final size = MediaQuery.of(context).size;
+    final w = size.width;
+    final h = w / 16 * 9;
     return Scaffold(
-      appBar: AppBar(
-        title: const Text('Canvas Player'),
-      ),
+      appBar: AppBar(),
       body: Center(
         child: Column(
-          mainAxisAlignment: MainAxisAlignment.center,
-          children: <Widget>[
-            Image.asset('assets/images/mock_image.png'),
+          mainAxisSize: MainAxisSize.max,
+          children: [
+            VidPlayer(
+              _playerController,
+              width: w,
+              height: h,
+            ),
+            SizedBox(
+              height: 160,
+              child: _playerController.totalFramesCount > 1
+                  ? VidPlayerControlBoard(
+                      _playerController,
+                      false,
+                    )
+                  : Container(),
+            ),
           ],
         ),
       ),
@@ -27,7 +73,8 @@ class _CanvasPlayerViewState extends State<CanvasPlayerView> {
 
   @override
   void dispose() {
-    print("CanvasPlayerView dispose");
+    _playerController.dispose();
+    _dataHost.release();
     super.dispose();
   }
 }

+ 62 - 3
lib/pages/image_player/view.dart

@@ -1,4 +1,13 @@
+// ignore_for_file: avoid_print
+
+import 'package:fis_measure/index.dart';
+import 'package:fis_measure/interfaces/process/player/play_controller.dart';
+import 'package:fis_measure/interfaces/process/workspace/application.dart';
+import 'package:fis_measure/process/workspace/application.dart';
+import 'package:fis_vid/data_host/data_host.dart';
 import 'package:flutter/material.dart';
+import 'package:get/get.dart';
+import 'package:vid/us/vid_us_image.dart';
 
 class ImagePlayerView extends StatefulWidget {
   const ImagePlayerView({Key? key}) : super(key: key);
@@ -8,6 +17,41 @@ class ImagePlayerView extends StatefulWidget {
 }
 
 class _ImagePlayerViewState extends State<ImagePlayerView> {
+  IPlayerController? _playerController;
+  IPlayerController get playerController => _playerController!;
+  VidDataHost? _vidDataHost;
+  VidDataHost get dataHost => _vidDataHost!;
+  List<String> mockData = [
+    "http://cdn-bj.fis.plus/093BE20682B14BFB95D811F221A2B2FD.vid"
+  ];
+
+  void loadVidDataHost(String url) {
+    print("${DateTime.now()} Load vid data host");
+    _vidDataHost = VidDataHost(url);
+    _playerController = VidPlayerController(dataHost: dataHost);
+  }
+
+  void startPlay() {
+    print("${DateTime.now()} Click play");
+    dataHost.load().then((value) {
+      if (value == null) {
+        // TOOO: add log
+      } else {
+        playerController.setLoadState(value != null);
+        Future.delayed(const Duration(milliseconds: 100), () {
+          playerController.play();
+        });
+        print("${DateTime.now()} Load vid data host success");
+      }
+    });
+  }
+
+  @override
+  void initState() {
+    super.initState();
+    loadVidDataHost(mockData[0]);
+  }
+
   @override
   Widget build(BuildContext context) {
     return Scaffold(
@@ -16,9 +60,22 @@ class _ImagePlayerViewState extends State<ImagePlayerView> {
       ),
       body: Center(
         child: Column(
-          mainAxisAlignment: MainAxisAlignment.center,
-          children: <Widget>[
-            Image.asset('assets/images/mock_image.png'),
+          mainAxisAlignment: MainAxisAlignment.spaceEvenly,
+          children: [
+            ElevatedButton(
+                onPressed: () {
+                  startPlay();
+                },
+                child: const Text('Play')),
+            SizedBox(
+              width: 500,
+              height: 500,
+              child: RepaintBoundary(
+                child: VidPlayer(
+                  _playerController as VidPlayerController,
+                ),
+              ),
+            ),
           ],
         ),
       ),
@@ -28,6 +85,8 @@ class _ImagePlayerViewState extends State<ImagePlayerView> {
   @override
   void dispose() {
     print("ImagePlayerView dispose");
+    _playerController?.dispose();
+    Get.delete<IPlayerController>();
     super.dispose();
   }
 }

+ 36 - 0
lib/pages/single_image.dart/view.dart

@@ -0,0 +1,36 @@
+import 'package:flutter/material.dart';
+import 'package:vid_player_demo/widgets/image_cache.dart';
+
+class SingleImageView extends StatefulWidget {
+  const SingleImageView({Key? key}) : super(key: key);
+
+  @override
+  _SingleImageViewState createState() => _SingleImageViewState();
+}
+
+class _SingleImageViewState extends State<SingleImageView> {
+  @override
+  Widget build(BuildContext context) {
+    return Scaffold(
+      appBar: AppBar(
+        title: const Text('Single Image'),
+      ),
+      body: Center(
+        child: Column(
+          mainAxisAlignment: MainAxisAlignment.center,
+          children: <Widget>[
+            const ShowImageCache(),
+            Image.asset('assets/images/mock_image.png',
+                width: 200, height: 200, fit: BoxFit.cover),
+          ],
+        ),
+      ),
+    );
+  }
+
+  @override
+  void dispose() {
+    print("SingleImageView dispose");
+    super.dispose();
+  }
+}

+ 3 - 0
lib/utils/utils.dart

@@ -0,0 +1,3 @@
+int byte2MB(int bytes) {
+  return (bytes / 1024 / 1024).round();
+}

+ 25 - 0
lib/widgets/image_cache.dart

@@ -0,0 +1,25 @@
+import 'package:flutter/material.dart';
+
+import '../utils/utils.dart';
+
+class ShowImageCache extends StatelessWidget {
+  const ShowImageCache({Key? key}) : super(key: key);
+  ImageCache? get imageCache => PaintingBinding.instance?.imageCache;
+
+  @override
+  Widget build(BuildContext context) {
+    return Column(mainAxisAlignment: MainAxisAlignment.center, children: [
+      const SizedBox(height: 8),
+      Text(
+        '当前图像缓存数量: ${imageCache?.currentSize ?? 0}',
+        style: const TextStyle(fontSize: 12),
+      ),
+      const SizedBox(height: 8),
+      Text(
+        '当前图像缓存大小: ${imageCache?.currentSizeBytes ?? 0}bytes = ${byte2MB(imageCache?.currentSizeBytes ?? 0)}MB',
+        style: const TextStyle(fontSize: 12),
+      ),
+      const SizedBox(height: 8),
+    ]);
+  }
+}

+ 693 - 2
pubspec.lock

@@ -1,6 +1,34 @@
 # Generated by pub
 # See https://dart.dev/tools/pub/glossary#lockfile
 packages:
+  animations:
+    dependency: "direct main"
+    description:
+      name: animations
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.0.2"
+  archive:
+    dependency: transitive
+    description:
+      name: archive
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "3.3.1"
+  args:
+    dependency: transitive
+    description:
+      name: args
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.3.1"
+  asn1lib:
+    dependency: transitive
+    description:
+      name: asn1lib
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "1.1.0"
   async:
     dependency: transitive
     description:
@@ -8,6 +36,13 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.8.2"
+  barcode:
+    dependency: transitive
+    description:
+      name: barcode
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.2.1"
   boolean_selector:
     dependency: transitive
     description:
@@ -29,6 +64,13 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.3.1"
+  charset:
+    dependency: "direct main"
+    description:
+      name: charset
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "1.0.1"
   clock:
     dependency: transitive
     description:
@@ -43,13 +85,83 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.15.0"
-  cupertino_icons:
+  convert:
+    dependency: transitive
+    description:
+      name: convert
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "3.0.2"
+  cropperx:
     dependency: "direct main"
+    description:
+      name: cropperx
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "1.0.0"
+  cross_file:
+    dependency: transitive
+    description:
+      name: cross_file
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "0.3.3+1"
+  crypto:
+    dependency: transitive
+    description:
+      name: crypto
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "3.0.2"
+  csslib:
+    dependency: transitive
+    description:
+      name: csslib
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "0.17.2"
+  cupertino_icons:
+    dependency: transitive
     description:
       name: cupertino_icons
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.0.5"
+  custom_pop_up_menu:
+    dependency: transitive
+    description:
+      name: custom_pop_up_menu
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "1.2.2"
+  data_table_2:
+    dependency: "direct main"
+    description:
+      name: data_table_2
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.1.1"
+  dio:
+    dependency: "direct main"
+    description:
+      name: dio
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "4.0.6"
+  dropdown_button2:
+    dependency: transitive
+    description:
+      name: dropdown_button2
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "1.2.2"
+  encrypt:
+    dependency: transitive
+    description:
+      name: encrypt
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "5.0.1"
   fake_async:
     dependency: transitive
     description:
@@ -57,11 +169,164 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.2.0"
+  ffi:
+    dependency: transitive
+    description:
+      name: ffi
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "1.2.1"
+  file:
+    dependency: transitive
+    description:
+      name: file
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "6.1.2"
+  file_picker:
+    dependency: transitive
+    description:
+      name: file_picker
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "4.6.1"
+  fis_common:
+    dependency: "direct main"
+    description:
+      path: "."
+      ref: "63dcf70026"
+      resolved-ref: "63dcf7002695b4d6709dad2161666542bf4fc0e2"
+      url: "http://git.ius.plus:88/Project-Wing/fis_lib_common.git"
+    source: git
+    version: "0.0.2"
+  fis_components:
+    dependency: "direct overridden"
+    description:
+      path: "."
+      ref: e0927b1
+      resolved-ref: e0927b13efc3cb406e7310bffc0824c90fd8f0df
+      url: "http://git.ius.plus/bakamaka.guan/fis_lib_business_components.git"
+    source: git
+    version: "0.0.1"
+  fis_i18n:
+    dependency: "direct main"
+    description:
+      path: "."
+      ref: da760eb50d
+      resolved-ref: da760eb50d6fdf59eb2defab634b2194b9f08025
+      url: "http://git.ius.plus:88/Project-Wing/fis_lib_i18n.git"
+    source: git
+    version: "0.0.1"
+  fis_jsonrpc:
+    dependency: "direct main"
+    description:
+      path: "."
+      ref: e8d0cc7f90
+      resolved-ref: e8d0cc7f909b311f12b345f372f4ae4bbabcffb8
+      url: "http://git.ius.plus:88/Project-Wing/fis_lib_jsonrpc.git"
+    source: git
+    version: "0.0.1"
+  fis_lib_pdf:
+    dependency: "direct main"
+    description:
+      path: "."
+      ref: "860efd7523"
+      resolved-ref: "860efd752308d4cd67c2b8a366839cb72483347a"
+      url: "http://git.ius.plus/jimmy.jiang/fis_lib_pdf.git"
+    source: git
+    version: "1.0.0+1"
+  fis_lib_print:
+    dependency: "direct overridden"
+    description:
+      path: "."
+      ref: "9fa7151158"
+      resolved-ref: "9fa7151158bf5e8b0b326caf1acd247203229916"
+      url: "http://git.ius.plus/jimmy.jiang/fis_lib_print.git"
+    source: git
+    version: "5.9.1"
+  fis_lib_report:
+    dependency: "direct main"
+    description:
+      path: "."
+      ref: "07399ae03e"
+      resolved-ref: "07399ae03efceb2e789b0fb4f288c462854662df"
+      url: "http://git.ius.plus/loki.wu/fis_lib_report.git"
+    source: git
+    version: "1.0.0+1"
+  fis_measure:
+    dependency: "direct main"
+    description:
+      path: "../fis_packages/fis_lib_measure"
+      relative: true
+    source: path
+    version: "1.0.0+1"
+  fis_resource:
+    dependency: "direct main"
+    description:
+      path: "."
+      ref: "1.0.1.1"
+      resolved-ref: c52238750e3d0e987cf65467ad6e265e618e24a2
+      url: "http://git.ius.plus:88/Project-Wing/fis_lib_resource.git"
+    source: git
+    version: "0.0.1"
+  fis_theme:
+    dependency: "direct main"
+    description:
+      path: "."
+      ref: "6991f8ef7f"
+      resolved-ref: "6991f8ef7f0e86a525f7cc70193f3eb97e85d824"
+      url: "http://git.ius.plus:88/Project-Wing/fis_lib_theme.git"
+    source: git
+    version: "0.0.1"
+  fis_ui:
+    dependency: "direct main"
+    description:
+      path: "."
+      ref: df9ed899f2c
+      resolved-ref: df9ed899f2c0caa59ac8d33df2fd57ff9c693f50
+      url: "http://git.ius.plus:88/Project-Wing/fis_lib_ui.git"
+    source: git
+    version: "0.0.1"
+  fis_vid:
+    dependency: "direct overridden"
+    description:
+      path: "../fis_packages/fis_lib_vid"
+      relative: true
+    source: path
+    version: "0.0.1"
   flutter:
     dependency: "direct main"
     description: flutter
     source: sdk
     version: "0.0.0"
+  flutter_easyloading:
+    dependency: "direct main"
+    description:
+      name: flutter_easyloading
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "3.0.3"
+  flutter_keyboard_visibility:
+    dependency: transitive
+    description:
+      name: flutter_keyboard_visibility
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "5.3.0"
+  flutter_keyboard_visibility_platform_interface:
+    dependency: transitive
+    description:
+      name: flutter_keyboard_visibility_platform_interface
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.0.0"
+  flutter_keyboard_visibility_web:
+    dependency: transitive
+    description:
+      name: flutter_keyboard_visibility_web
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.0.0"
   flutter_lints:
     dependency: "direct dev"
     description:
@@ -69,11 +334,154 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.0.4"
+  flutter_localizations:
+    dependency: "direct main"
+    description: flutter
+    source: sdk
+    version: "0.0.0"
+  flutter_picker:
+    dependency: "direct main"
+    description:
+      name: flutter_picker
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.0.2"
+  flutter_plugin_android_lifecycle:
+    dependency: transitive
+    description:
+      name: flutter_plugin_android_lifecycle
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.0.7"
+  flutter_screenutil:
+    dependency: "direct main"
+    description:
+      name: flutter_screenutil
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "5.0.3"
+  flutter_slidable:
+    dependency: "direct main"
+    description:
+      name: flutter_slidable
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "1.2.0"
+  flutter_spinkit:
+    dependency: transitive
+    description:
+      name: flutter_spinkit
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "5.1.0"
   flutter_test:
     dependency: "direct dev"
     description: flutter
     source: sdk
     version: "0.0.0"
+  flutter_treeview:
+    dependency: "direct main"
+    description:
+      name: flutter_treeview
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "1.0.7+1"
+  flutter_typeahead:
+    dependency: transitive
+    description:
+      name: flutter_typeahead
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "3.2.4"
+  flutter_web_plugins:
+    dependency: transitive
+    description: flutter
+    source: sdk
+    version: "0.0.0"
+  get:
+    dependency: "direct main"
+    description:
+      name: get
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "4.6.1"
+  html:
+    dependency: transitive
+    description:
+      name: html
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "0.15.0"
+  http:
+    dependency: "direct main"
+    description:
+      name: http
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "0.13.4"
+  http_parser:
+    dependency: transitive
+    description:
+      name: http_parser
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "4.0.1"
+  image:
+    dependency: "direct main"
+    description:
+      name: image
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "3.1.3"
+  image_picker:
+    dependency: "direct main"
+    description:
+      name: image_picker
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "0.8.5"
+  image_picker_android:
+    dependency: "direct overridden"
+    description:
+      name: image_picker_android
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "0.8.4+13"
+  image_picker_for_web:
+    dependency: transitive
+    description:
+      name: image_picker_for_web
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.1.8"
+  image_picker_ios:
+    dependency: transitive
+    description:
+      name: image_picker_ios
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "0.8.5+6"
+  image_picker_platform_interface:
+    dependency: transitive
+    description:
+      name: image_picker_platform_interface
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.6.0"
+  intl:
+    dependency: "direct main"
+    description:
+      name: intl
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "0.17.0"
+  js:
+    dependency: transitive
+    description:
+      name: js
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "0.6.3"
   lints:
     dependency: transitive
     description:
@@ -102,13 +510,188 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.7.0"
-  path:
+  mime:
+    dependency: "direct main"
+    description:
+      name: mime
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "1.0.1"
+  open_file:
     dependency: transitive
+    description:
+      name: open_file
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "3.2.1"
+  path:
+    dependency: "direct main"
     description:
       name: path
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.8.0"
+  path_drawing:
+    dependency: transitive
+    description:
+      name: path_drawing
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "1.0.0"
+  path_parsing:
+    dependency: transitive
+    description:
+      name: path_parsing
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "1.0.0"
+  path_provider:
+    dependency: "direct main"
+    description:
+      name: path_provider
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.0.2"
+  path_provider_linux:
+    dependency: transitive
+    description:
+      name: path_provider_linux
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.1.7"
+  path_provider_macos:
+    dependency: transitive
+    description:
+      name: path_provider_macos
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.0.6"
+  path_provider_platform_interface:
+    dependency: transitive
+    description:
+      name: path_provider_platform_interface
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.0.4"
+  path_provider_windows:
+    dependency: transitive
+    description:
+      name: path_provider_windows
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.0.7"
+  pdf:
+    dependency: transitive
+    description:
+      name: pdf
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "3.8.2"
+  petitparser:
+    dependency: transitive
+    description:
+      name: petitparser
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "4.4.0"
+  platform:
+    dependency: transitive
+    description:
+      name: platform
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "3.1.0"
+  plugin_platform_interface:
+    dependency: transitive
+    description:
+      name: plugin_platform_interface
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.1.2"
+  pointycastle:
+    dependency: transitive
+    description:
+      name: pointycastle
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "3.6.1"
+  process:
+    dependency: transitive
+    description:
+      name: process
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "4.2.4"
+  pull_to_refresh:
+    dependency: "direct main"
+    description:
+      name: pull_to_refresh
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.0.0"
+  qr:
+    dependency: transitive
+    description:
+      name: qr
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "3.0.1"
+  qr_code_scanner:
+    dependency: "direct main"
+    description:
+      name: qr_code_scanner
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "0.7.0"
+  quiver:
+    dependency: transitive
+    description:
+      name: quiver
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "3.1.0"
+  shared_preferences:
+    dependency: "direct main"
+    description:
+      name: shared_preferences
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.0.5"
+  shared_preferences_linux:
+    dependency: transitive
+    description:
+      name: shared_preferences_linux
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.1.1"
+  shared_preferences_macos:
+    dependency: transitive
+    description:
+      name: shared_preferences_macos
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.0.4"
+  shared_preferences_platform_interface:
+    dependency: transitive
+    description:
+      name: shared_preferences_platform_interface
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.0.0"
+  shared_preferences_web:
+    dependency: transitive
+    description:
+      name: shared_preferences_web
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.0.4"
+  shared_preferences_windows:
+    dependency: transitive
+    description:
+      name: shared_preferences_windows
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.1.1"
   sky_engine:
     dependency: transitive
     description: flutter
@@ -142,6 +725,13 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.1.0"
+  synchronized:
+    dependency: "direct main"
+    description:
+      name: synchronized
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "3.0.0"
   term_glyph:
     dependency: transitive
     description:
@@ -163,6 +753,34 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.3.0"
+  universal_html:
+    dependency: "direct main"
+    description:
+      name: universal_html
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.0.8"
+  universal_io:
+    dependency: transitive
+    description:
+      name: universal_io
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.0.4"
+  url_strategy:
+    dependency: "direct main"
+    description:
+      name: url_strategy
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "0.2.0"
+  uuid:
+    dependency: transitive
+    description:
+      name: uuid
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "3.0.6"
   vector_math:
     dependency: transitive
     description:
@@ -170,5 +788,78 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.1.1"
+  vid:
+    dependency: "direct main"
+    description:
+      path: "."
+      ref: "54343a18f3"
+      resolved-ref: "54343a18f30abb5b32d3f9f3bd9fe44ade5cabe8"
+      url: "http://git.ius.plus:88/Project-Wing/flutter_vid"
+    source: git
+    version: "0.0.1"
+  web_socket_channel:
+    dependency: transitive
+    description:
+      name: web_socket_channel
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.2.0"
+  webview_flutter:
+    dependency: "direct main"
+    description:
+      name: webview_flutter
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "3.0.0"
+  webview_flutter_android:
+    dependency: transitive
+    description:
+      name: webview_flutter_android
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.8.14"
+  webview_flutter_platform_interface:
+    dependency: transitive
+    description:
+      name: webview_flutter_platform_interface
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "1.9.1"
+  webview_flutter_web:
+    dependency: "direct main"
+    description:
+      name: webview_flutter_web
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "0.1.0+4"
+  webview_flutter_wkwebview:
+    dependency: transitive
+    description:
+      name: webview_flutter_wkwebview
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.7.5"
+  win32:
+    dependency: transitive
+    description:
+      name: win32
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.5.2"
+  xdg_directories:
+    dependency: transitive
+    description:
+      name: xdg_directories
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "0.2.0+1"
+  xml:
+    dependency: transitive
+    description:
+      name: xml
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "5.3.1"
 sdks:
   dart: ">=2.16.2 <3.0.0"
+  flutter: ">=2.8.0"

+ 127 - 6
pubspec.yaml

@@ -3,7 +3,7 @@ description: A new Flutter project.
 
 # The following line prevents the package from being accidentally published to
 # pub.dev using `flutter pub publish`. This is preferred for private packages.
-publish_to: 'none' # Remove this line if you wish to publish to pub.dev
+publish_to: "none" # Remove this line if you wish to publish to pub.dev
 
 # The following defines the version and build number for your application.
 # A version number is three numbers separated by dots, like 1.2.43
@@ -29,11 +29,135 @@ environment:
 dependencies:
   flutter:
     sdk: flutter
-
+  flutter_localizations:
+    sdk: flutter
 
   # The following adds the Cupertino Icons font to your application.
   # Use with the CupertinoIcons class for iOS style icons.
-  cupertino_icons: ^1.0.2
+  # cupertino_icons: ^1.0.2
+  shared_preferences: 2.0.5
+
+  fis_common:
+    git:
+      url: http://git.ius.plus:88/Project-Wing/fis_lib_common.git
+      ref: ^1.0.0
+  fis_theme:
+    git:
+      url: http://git.ius.plus:88/Project-Wing/fis_lib_theme.git
+      ref: ^1.0.0.2
+  fis_ui:
+    git:
+      url: http://git.ius.plus:88/Project-Wing/fis_lib_ui.git
+      ref: ^1.0.1-rc3
+  fis_resource:
+    git:
+      url: http://git.ius.plus:88/Project-Wing/fis_lib_resource.git
+      ref: ^1.0.1.1
+  fis_i18n:
+    git:
+      url: http://git.ius.plus:88/Project-Wing/fis_lib_i18n.git
+      ref: ^1.0.0
+  fis_jsonrpc:
+    git:
+      url: http://git.ius.plus:88/Project-Wing/fis_lib_jsonrpc.git
+      ref: ^1.1.1
+  vid:
+    git:
+      url: http://git.ius.plus:88/Project-Wing/flutter_vid
+      ref: 173b68819c
+  fis_measure:
+    git:
+      url: http://git.ius.plus/melon.yin/fis_lib_measure.git
+      ref: cad42474f0
+    # path: ../fis_lib_measure
+  fis_lib_report:
+    git:
+      url: http://git.ius.plus/loki.wu/fis_lib_report.git
+      ref: 07399ae03e
+  fis_lib_pdf:
+    git:
+      url: http://git.ius.plus/jimmy.jiang/fis_lib_pdf.git
+      ref: 860efd7523
+
+  path_provider: 2.0.2
+  synchronized: 3.0.0
+  get: 4.6.1
+  intl: 0.17.0
+  flutter_easyloading: 3.0.3
+  data_table_2: 2.1.1
+  flutter_screenutil: 5.0.3
+  # device_info_plus: 3.1.0
+  webview_flutter: 3.0.0
+  webview_flutter_web: 0.1.0+4
+  flutter_picker: 2.0.2
+  image: 3.1.3
+  image_picker: 0.8.5
+  path: 1.8.0
+  mime: 1.0.1
+  url_strategy: 0.2.0
+  flutter_slidable: 1.2.0
+  universal_html: 2.0.8
+  dio: 4.0.6
+  http: 0.13.4
+  cropperx: 1.0.0
+  animations: 2.0.2
+
+  # web_socket_channel: 2.2.0
+  pull_to_refresh: 2.0.0
+  flutter_treeview: 1.0.7+1
+  qr_code_scanner: 0.7.0
+  charset: ^1.0.1
+
+# 需要覆盖版本号的依赖
+dependency_overrides:
+  image_picker_android: 0.8.4+13
+  fis_measure:
+    path: ../fis_packages/fis_lib_measure
+  fis_common:
+    git:
+      url: http://git.ius.plus:88/Project-Wing/fis_lib_common.git
+      ref: 63dcf70026
+    # path: ../fis_packages/fis_lib_common
+  fis_i18n:
+    git:
+      url: http://git.ius.plus:88/Project-Wing/fis_lib_i18n.git
+      ref: da760eb50d
+    # path: ../fis_packages/fis_lib_i18n
+  fis_ui:
+    git:
+      url: http://git.ius.plus:88/Project-Wing/fis_lib_ui.git
+      ref: df9ed899f2c
+    # path: ../fis_packages/fis_lib_ui
+  fis_jsonrpc:
+    git:
+      url: http://git.ius.plus:88/Project-Wing/fis_lib_jsonrpc.git
+      ref: e8d0cc7f90
+    #  path: E:\ACode\fis_lib_jsonrpc
+  fis_theme:
+    git:
+      url: http://git.ius.plus:88/Project-Wing/fis_lib_theme.git
+      ref: 6991f8ef7f
+  fis_resource:
+    git:
+      url: http://git.ius.plus:88/Project-Wing/fis_lib_resource.git
+      ref: 1.0.1.1
+  vid:
+    git:
+      url: http://git.ius.plus:88/Project-Wing/flutter_vid
+      ref: 54343a18f3
+  fis_vid:
+    # git:
+    #   url: http://git.ius.plus/melon.yin/fis_lib_vid.git
+    #   ref: d226cb53ba
+    path: ../fis_packages/fis_lib_vid
+  fis_lib_print:
+    git:
+      url: http://git.ius.plus/jimmy.jiang/fis_lib_print.git
+      ref: 9fa7151158
+  fis_components:
+    git:
+      url: http://git.ius.plus/bakamaka.guan/fis_lib_business_components.git
+      ref: e0927b1
 
 dev_dependencies:
   flutter_test:
@@ -51,13 +175,10 @@ dev_dependencies:
 
 # The following section is specific to Flutter.
 flutter:
-
   # The following line ensures that the Material Icons font is
   # included with your application, so that you can use the icons in
   # the material Icons class.
   uses-material-design: true
-
-  To add assets to your application, add an assets section, like this:
   assets:
     - assets/images/mock_image.png