Bladeren bron

增加flutter

lijian 1 jaar geleden
bovenliggende
commit
7bccf9ef88
29 gewijzigde bestanden met toevoegingen van 882 en 177 verwijderingen
  1. BIN
      .DS_Store
  2. 7 2
      Podfile
  3. 14 1
      Podfile.lock
  4. 14 1
      Pods/Manifest.lock
  5. 259 145
      Pods/Pods.xcodeproj/project.pbxproj
  6. 2 4
      Pods/Target Support Files/Pods-Temperature/Pods-Temperature.debug.xcconfig
  7. 2 4
      Pods/Target Support Files/Pods-Temperature/Pods-Temperature.release.xcconfig
  8. 22 0
      Temperature.xcodeproj/project.pbxproj
  9. 3 4
      Temperature/AppDelegate.h
  10. 7 2
      Temperature/AppDelegate.m
  11. BIN
      Temperature/Assets.xcassets/AddRoom/.DS_Store
  12. BIN
      Temperature/Assets.xcassets/AddRoom/image_reset_5.imageset/1031705384000_.pic 1.jpg
  13. BIN
      Temperature/Assets.xcassets/AddRoom/image_reset_5.imageset/1031705384000_.pic.jpg
  14. BIN
      Temperature/Assets.xcassets/AddRoom/image_reset_5.imageset/530 1.png
  15. BIN
      Temperature/Assets.xcassets/AddRoom/image_reset_5.imageset/530.png
  16. 2 2
      Temperature/Assets.xcassets/AddRoom/image_reset_5.imageset/Contents.json
  17. 2 1
      Temperature/ControlModule/Find/Controller/RDSFindVC.h
  18. 1 0
      Temperature/ControlModule/Find/Controller/RDSFindVC.m
  19. 11 11
      Temperature/Main/Nav/RDSTabbarController.m
  20. 49 0
      yxlj_flutter/.gitignore
  21. 10 0
      yxlj_flutter/.metadata
  22. 11 0
      yxlj_flutter/README.md
  23. 4 0
      yxlj_flutter/analysis_options.yaml
  24. 112 0
      yxlj_flutter/lib/main.dart
  25. 188 0
      yxlj_flutter/pubspec.lock
  26. 87 0
      yxlj_flutter/pubspec.yaml
  27. 30 0
      yxlj_flutter/test/widget_test.dart
  28. 18 0
      yxlj_flutter/yxlj_flutter.iml
  29. 27 0
      yxlj_flutter/yxlj_flutter_android.iml

BIN
.DS_Store


+ 7 - 2
Podfile

@@ -1,4 +1,5 @@
-
+flutter_application_path = './yxlj_flutter'
+load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')
 post_install do |installer|
   installer.generated_projects.each do |project|
     project.targets.each do |target|
@@ -7,13 +8,17 @@ post_install do |installer|
        end
     end
   end
+  flutter_post_install(installer) if defined?(flutter_post_install)
 end
 
+
+
+
 platform :ios, '12.0'
 inhibit_all_warnings!
 
 target 'Temperature' do
-    
+install_all_flutter_pods(flutter_application_path)
 use_frameworks!
 
 pod 'AFNetworking'

+ 14 - 1
Podfile.lock

@@ -15,6 +15,9 @@ PODS:
   - AFNetworking/UIKit (4.0.1):
     - AFNetworking/NSURLSession
   - FDFullscreenPopGesture (1.1)
+  - Flutter (1.0.0)
+  - FlutterPluginRegistrant (0.0.1):
+    - Flutter
   - FMDB (2.7.5):
     - FMDB/standard (= 2.7.5)
   - FMDB/standard (2.7.5)
@@ -35,6 +38,8 @@ PODS:
 DEPENDENCIES:
   - AFNetworking
   - FDFullscreenPopGesture
+  - Flutter (from `yxlj_flutter/.ios/Flutter`)
+  - FlutterPluginRegistrant (from `yxlj_flutter/.ios/Flutter/FlutterPluginRegistrant`)
   - FMDB
   - Masonry
   - MJExtension
@@ -62,9 +67,17 @@ SPEC REPOS:
     - WebViewJavascriptBridge
     - YBPopupMenu
 
+EXTERNAL SOURCES:
+  Flutter:
+    :path: yxlj_flutter/.ios/Flutter
+  FlutterPluginRegistrant:
+    :path: yxlj_flutter/.ios/Flutter/FlutterPluginRegistrant
+
 SPEC CHECKSUMS:
   AFNetworking: 3bd23d814e976cd148d7d44c3ab78017b744cd58
   FDFullscreenPopGesture: a8a620179e3d9c40e8e00256dcee1c1a27c6d0f0
+  Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
+  FlutterPluginRegistrant: 0b732256b4829f9783c18c68e2f9adacc1536955
   FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
   Masonry: 678fab65091a9290e40e2832a55e7ab731aad201
   MJExtension: 21c5f6f8c4d5d8844b7ae8fbae08fed0b501f961
@@ -77,6 +90,6 @@ SPEC CHECKSUMS:
   WebViewJavascriptBridge: 7f5bc4d3581e672e8f32bd0f812d54bc69bb8e29
   YBPopupMenu: ace6d58993c6013e44eea203fd5d1e00a039a0b6
 
-PODFILE CHECKSUM: 532433921fa5b6744230926de1ab4dedc8183577
+PODFILE CHECKSUM: 28105f097d1082fef346121a432acdc406c8ccf2
 
 COCOAPODS: 1.14.3

+ 14 - 1
Pods/Manifest.lock

@@ -15,6 +15,9 @@ PODS:
   - AFNetworking/UIKit (4.0.1):
     - AFNetworking/NSURLSession
   - FDFullscreenPopGesture (1.1)
+  - Flutter (1.0.0)
+  - FlutterPluginRegistrant (0.0.1):
+    - Flutter
   - FMDB (2.7.5):
     - FMDB/standard (= 2.7.5)
   - FMDB/standard (2.7.5)
@@ -35,6 +38,8 @@ PODS:
 DEPENDENCIES:
   - AFNetworking
   - FDFullscreenPopGesture
+  - Flutter (from `yxlj_flutter/.ios/Flutter`)
+  - FlutterPluginRegistrant (from `yxlj_flutter/.ios/Flutter/FlutterPluginRegistrant`)
   - FMDB
   - Masonry
   - MJExtension
@@ -62,9 +67,17 @@ SPEC REPOS:
     - WebViewJavascriptBridge
     - YBPopupMenu
 
+EXTERNAL SOURCES:
+  Flutter:
+    :path: yxlj_flutter/.ios/Flutter
+  FlutterPluginRegistrant:
+    :path: yxlj_flutter/.ios/Flutter/FlutterPluginRegistrant
+
 SPEC CHECKSUMS:
   AFNetworking: 3bd23d814e976cd148d7d44c3ab78017b744cd58
   FDFullscreenPopGesture: a8a620179e3d9c40e8e00256dcee1c1a27c6d0f0
+  Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
+  FlutterPluginRegistrant: 0b732256b4829f9783c18c68e2f9adacc1536955
   FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
   Masonry: 678fab65091a9290e40e2832a55e7ab731aad201
   MJExtension: 21c5f6f8c4d5d8844b7ae8fbae08fed0b501f961
@@ -77,6 +90,6 @@ SPEC CHECKSUMS:
   WebViewJavascriptBridge: 7f5bc4d3581e672e8f32bd0f812d54bc69bb8e29
   YBPopupMenu: ace6d58993c6013e44eea203fd5d1e00a039a0b6
 
-PODFILE CHECKSUM: 532433921fa5b6744230926de1ab4dedc8183577
+PODFILE CHECKSUM: 28105f097d1082fef346121a432acdc406c8ccf2
 
 COCOAPODS: 1.14.3

File diff suppressed because it is too large
+ 259 - 145
Pods/Pods.xcodeproj/project.pbxproj


File diff suppressed because it is too large
+ 2 - 4
Pods/Target Support Files/Pods-Temperature/Pods-Temperature.debug.xcconfig


File diff suppressed because it is too large
+ 2 - 4
Pods/Target Support Files/Pods-Temperature/Pods-Temperature.release.xcconfig


+ 22 - 0
Temperature.xcodeproj/project.pbxproj

@@ -1321,10 +1321,12 @@
 			buildConfigurationList = 22A8C20F29029507008B9448 /* Build configuration list for PBXNativeTarget "Temperature" */;
 			buildPhases = (
 				EFA5E39387839006A65006A9 /* [CP] Check Pods Manifest.lock */,
+				3AFF6432CA66C0EB5B069F60 /* [CP-User] Run Flutter Build yxlj_flutter Script */,
 				22A8C1DC29029501008B9448 /* Sources */,
 				22A8C1DD29029501008B9448 /* Frameworks */,
 				22A8C1DE29029501008B9448 /* Resources */,
 				210AA9554E5581DD4BF0F236 /* [CP] Embed Pods Frameworks */,
+				D577A58BCDB84BC02802AFA6 /* [CP-User] Embed Flutter Build yxlj_flutter Script */,
 			);
 			buildRules = (
 			);
@@ -1502,6 +1504,26 @@
 			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Temperature/Pods-Temperature-frameworks.sh\"\n";
 			showEnvVarsInLog = 0;
 		};
+		3AFF6432CA66C0EB5B069F60 /* [CP-User] Run Flutter Build yxlj_flutter Script */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			name = "[CP-User] Run Flutter Build yxlj_flutter Script";
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "set -e\nset -u\nsource \"${SRCROOT}/yxlj_flutter/.ios/Flutter/flutter_export_environment.sh\"\nexport VERBOSE_SCRIPT_LOGGING=1 && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/xcode_backend.sh build";
+		};
+		D577A58BCDB84BC02802AFA6 /* [CP-User] Embed Flutter Build yxlj_flutter Script */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			name = "[CP-User] Embed Flutter Build yxlj_flutter Script";
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "set -e\nset -u\nsource \"${SRCROOT}/yxlj_flutter/.ios/Flutter/flutter_export_environment.sh\"\nexport VERBOSE_SCRIPT_LOGGING=1 && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/xcode_backend.sh embed_and_thin";
+		};
 		EFA5E39387839006A65006A9 /* [CP] Check Pods Manifest.lock */ = {
 			isa = PBXShellScriptBuildPhase;
 			buildActionMask = 2147483647;

+ 3 - 4
Temperature/AppDelegate.h

@@ -6,10 +6,9 @@
 //
 
 #import <UIKit/UIKit.h>
+@import Flutter;
 
-@interface AppDelegate : UIResponder <UIApplicationDelegate>
-
-@property (strong, nonatomic) UIWindow *window;
-
+@interface AppDelegate : FlutterAppDelegate
+@property (nonatomic,strong) FlutterEngine *flutterEngine;
 @end
 

+ 7 - 2
Temperature/AppDelegate.m

@@ -10,7 +10,7 @@
 #import "RDSRootControl.h"
 #import <MMKV/MMKV.h>
 #import <WebKit/WebKit.h>
-
+#import <FlutterPluginRegistrant/GeneratedPluginRegistrant.h>
 @interface AppDelegate ()
 @property (nonatomic, strong) WKWebView *webView;
 @end
@@ -25,7 +25,12 @@
     self.window.rootViewController = [RDSRootControl shareControl].rootViewController;
     [self.window makeKeyAndVisible];
     self.window.backgroundColor = RDSViewBgColor;
-    
+    self.flutterEngine = [[FlutterEngine alloc] initWithName:@"my flutter engine"];
+      // Runs the default Dart entrypoint with a default Flutter route.
+      [self.flutterEngine run];
+      // Connects plugins with iOS platform code to this app.
+      [GeneratedPluginRegistrant registerWithRegistry:self.flutterEngine];
+     // return [super application:application didFinishLaunchingWithOptions:launchOptions];
     // 初始化MMKV
 //    [MMKV initializeMMKV:nil];
     

BIN
Temperature/Assets.xcassets/AddRoom/.DS_Store


BIN
Temperature/Assets.xcassets/AddRoom/image_reset_5.imageset/1031705384000_.pic 1.jpg


BIN
Temperature/Assets.xcassets/AddRoom/image_reset_5.imageset/1031705384000_.pic.jpg


BIN
Temperature/Assets.xcassets/AddRoom/image_reset_5.imageset/530 1.png


BIN
Temperature/Assets.xcassets/AddRoom/image_reset_5.imageset/530.png


+ 2 - 2
Temperature/Assets.xcassets/AddRoom/image_reset_5.imageset/Contents.json

@@ -5,12 +5,12 @@
       "scale" : "1x"
     },
     {
-      "filename" : "1031705384000_.pic.jpg",
+      "filename" : "530.png",
       "idiom" : "universal",
       "scale" : "2x"
     },
     {
-      "filename" : "1031705384000_.pic 1.jpg",
+      "filename" : "530 1.png",
       "idiom" : "universal",
       "scale" : "3x"
     }

+ 2 - 1
Temperature/ControlModule/Find/Controller/RDSFindVC.h

@@ -6,10 +6,11 @@
 //
 
 #import "RDSBaseViewController.h"
+@import Flutter;
 
 NS_ASSUME_NONNULL_BEGIN
 
-@interface RDSFindVC : RDSBaseViewController
+@interface RDSFindVC : FlutterViewController
 
 @end
 

+ 1 - 0
Temperature/ControlModule/Find/Controller/RDSFindVC.m

@@ -16,6 +16,7 @@
 - (void)viewDidLoad {
     [super viewDidLoad];
     // Do any additional setup after loading the view.
+    self.fd_prefersNavigationBarHidden = YES;
 }
 
 

+ 11 - 11
Temperature/Main/Nav/RDSTabbarController.m

@@ -25,15 +25,15 @@
 #define TabBarImage           @"image"             //--未选中时tabbar的图片
 #define TabBarSelectedImage   @"selectedImage"     //--选中时tabbar的图片
 #define TabBarItemBadgeValue  @"badgeValue"        //--未读个数
-#define TabBarCount 3                              //--tabbarItem的个数
+#define TabBarCount 4                            //--tabbarItem的个数
 
 typedef NS_ENUM(NSInteger,RDSTabType) {
     
     // --这里的顺序,决定了 tabbar 从左到右item的显示顺序
     RDSTabTypeHome,     // 首页
     RDSTabTypeRoom,     // 房间
-//    RDSTabTypeAdd,      // 添加(只作占位用)
-//    RDSTabTypeFind,     // 资讯
+    //RDSTabTypeAdd,      // 添加(只作占位用)
+    RDSTabTypeFind,     // 资讯
     RDSTabTypeMy,       // 设置
 };
 
@@ -134,7 +134,7 @@ typedef NS_ENUM(NSInteger,RDSTabType) {
 //        if(idx == 2){
 //            nav.tabBarItem.enabled = NO;
 //        }
- 
+// 
         [vcArray addObject:nav];
     }];
     self.viewControllers = [NSArray arrayWithArray:vcArray];
@@ -237,13 +237,13 @@ typedef NS_ENUM(NSInteger,RDSTabType) {
 //                             TabBarSelectedImage: @"icon_tab_clear",
 //                             TabBarItemBadgeValue: @(0)
 //                             },
-//                     @(RDSTabTypeFind): @{
-//                             TabBarVC           : @"RDSFindVC",
-//                             TabBarTitle        : @"发现",
-//                             TabBarImage        : @"icon_tab_found",
-//                             TabBarSelectedImage: @"icon_tab_found_sel",
-//                             TabBarItemBadgeValue: @(0)
-//                             },
+                     @(RDSTabTypeFind): @{
+                             TabBarVC           : @"RDSFindVC",
+                             TabBarTitle        : @"发现",
+                             TabBarImage        : @"icon_tab_found",
+                             TabBarSelectedImage: @"icon_tab_found_sel",
+                             TabBarItemBadgeValue: @(0)
+                             },
                      @(RDSTabTypeMy)     : @{
                              TabBarVC           : @"RDSMyVC",
                              TabBarTitle        : @"我的",

+ 49 - 0
yxlj_flutter/.gitignore

@@ -0,0 +1,49 @@
+.DS_Store
+.dart_tool/
+
+.pub/
+
+.idea/
+.vagrant/
+.sconsign.dblite
+.svn/
+
+migrate_working_dir/
+
+*.swp
+profile
+
+DerivedData/
+
+.generated/
+
+*.pbxuser
+*.mode1v3
+*.mode2v3
+*.perspectivev3
+
+!default.pbxuser
+!default.mode1v3
+!default.mode2v3
+!default.perspectivev3
+
+xcuserdata
+
+*.moved-aside
+
+*.pyc
+*sync/
+Icon?
+.tags*
+
+build/
+.android/
+.ios/
+.flutter-plugins
+.flutter-plugins-dependencies
+
+# Symbolication related
+app.*.symbols
+
+# Obfuscation related
+app.*.map.json

+ 10 - 0
yxlj_flutter/.metadata

@@ -0,0 +1,10 @@
+# This file tracks properties of this Flutter project.
+# Used by Flutter tool to assess capabilities and perform upgrades etc.
+#
+# This file should be version controlled and should not be manually edited.
+
+version:
+  revision: "ef1af02aead6fe2414f3aafa5a61087b610e1332"
+  channel: "stable"
+
+project_type: module

+ 11 - 0
yxlj_flutter/README.md

@@ -0,0 +1,11 @@
+# yxlj_flutter
+
+A new Flutter module project.
+
+## Getting Started
+
+For help getting started with Flutter development, view the online
+[documentation](https://flutter.dev/).
+
+For instructions integrating Flutter modules to your existing applications,
+see the [add-to-app documentation](https://flutter.dev/docs/development/add-to-app).

+ 4 - 0
yxlj_flutter/analysis_options.yaml

@@ -0,0 +1,4 @@
+include: package:flutter_lints/flutter.yaml
+
+# Additional information about this file can be found at
+# https://dart.dev/guides/language/analysis-options

+ 112 - 0
yxlj_flutter/lib/main.dart

@@ -0,0 +1,112 @@
+import 'package:flutter/material.dart';
+
+void main() => runApp(const MyApp());
+
+class MyApp extends StatelessWidget {
+  const MyApp({super.key});
+
+  // This widget is the root of your application.
+  @override
+  Widget build(BuildContext context) {
+    return MaterialApp(
+      title: 'Flutter Demo',
+      theme: ThemeData(
+        // This is the theme of your application.
+        //
+        // Try running your application with "flutter run". You'll see the
+        // application has a blue toolbar. Then, without quitting the app, try
+        // changing the primarySwatch below to Colors.green and then invoke
+        // "hot reload" (press "r" in the console where you ran "flutter run",
+        // or press Run > Flutter Hot Reload in a Flutter IDE). Notice that the
+        // counter didn't reset back to zero; the application is not restarted.
+        primarySwatch: Colors.blue,
+      ),
+      home: const MyHomePage(title: 'Flutter Demo Home Page'),
+    );
+  }
+}
+
+class MyHomePage extends StatefulWidget {
+  const MyHomePage({super.key, required this.title});
+
+  // This widget is the home page of your application. It is stateful, meaning
+  // that it has a State object (defined below) that contains fields that affect
+  // how it looks.
+
+  // This class is the configuration for the state. It holds the values (in this
+  // case the title) provided by the parent (in this case the App widget) and
+  // used by the build method of the State. Fields in a Widget subclass are
+  // always marked "final".
+
+  final String title;
+
+  @override
+  State<MyHomePage> createState() => _MyHomePageState();
+}
+
+class _MyHomePageState extends State<MyHomePage> {
+  int _counter = 0;
+
+  void _incrementCounter() {
+    setState(() {
+      // This call to setState tells the Flutter framework that something has
+      // changed in this State, which causes it to rerun the build method below
+      // so that the display can reflect the updated values. If we changed
+      // _counter without calling setState(), then the build method would not be
+      // called again, and so nothing would appear to happen.
+      _counter++;
+    });
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    // This method is rerun every time setState is called, for instance as done
+    // by the _incrementCounter method above.
+    //
+    // The Flutter framework has been optimized to make rerunning build methods
+    // fast, so that you can just rebuild anything that needs updating rather
+    // than having to individually change instances of widgets.
+    return Scaffold(
+      appBar: AppBar(
+        // Here we take the value from the MyHomePage object that was created by
+        // the App.build method, and use it to set our appbar title.
+        title: Text(widget.title),
+      ),
+      body: Center(
+        // Center is a layout widget. It takes a single child and positions it
+        // in the middle of the parent.
+        child: Column(
+          // Column is also a layout widget. It takes a list of children and
+          // arranges them vertically. By default, it sizes itself to fit its
+          // children horizontally, and tries to be as tall as its parent.
+          //
+          // Invoke "debug painting" (press "p" in the console, choose the
+          // "Toggle Debug Paint" action from the Flutter Inspector in Android
+          // Studio, or the "Toggle Debug Paint" command in Visual Studio Code)
+          // to see the wireframe for each widget.
+          //
+          // Column has various properties to control how it sizes itself and
+          // how it positions its children. Here we use mainAxisAlignment to
+          // center the children vertically; the main axis here is the vertical
+          // axis because Columns are vertical (the cross axis would be
+          // horizontal).
+          mainAxisAlignment: MainAxisAlignment.center,
+          children: <Widget>[
+            const Text(
+              'You have pushed the button this many times:',
+            ),
+            Text(
+              '$_counter',
+              style: Theme.of(context).textTheme.headlineMedium,
+            ),
+          ],
+        ),
+      ),
+      floatingActionButton: FloatingActionButton(
+        onPressed: _incrementCounter,
+        tooltip: 'Increment',
+        child: const Icon(Icons.add),
+      ), // This trailing comma makes auto-formatting nicer for build methods.
+    );
+  }
+}

+ 188 - 0
yxlj_flutter/pubspec.lock

@@ -0,0 +1,188 @@
+# Generated by pub
+# See https://dart.dev/tools/pub/glossary#lockfile
+packages:
+  async:
+    dependency: transitive
+    description:
+      name: async
+      sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.11.0"
+  boolean_selector:
+    dependency: transitive
+    description:
+      name: boolean_selector
+      sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.1.1"
+  characters:
+    dependency: transitive
+    description:
+      name: characters
+      sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.3.0"
+  clock:
+    dependency: transitive
+    description:
+      name: clock
+      sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.1.1"
+  collection:
+    dependency: transitive
+    description:
+      name: collection
+      sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.18.0"
+  cupertino_icons:
+    dependency: "direct main"
+    description:
+      name: cupertino_icons
+      sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.0.6"
+  fake_async:
+    dependency: transitive
+    description:
+      name: fake_async
+      sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.3.1"
+  flutter:
+    dependency: "direct main"
+    description: flutter
+    source: sdk
+    version: "0.0.0"
+  flutter_lints:
+    dependency: "direct dev"
+    description:
+      name: flutter_lints
+      sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.0.3"
+  flutter_test:
+    dependency: "direct dev"
+    description: flutter
+    source: sdk
+    version: "0.0.0"
+  lints:
+    dependency: transitive
+    description:
+      name: lints
+      sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.1.1"
+  matcher:
+    dependency: transitive
+    description:
+      name: matcher
+      sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.12.16"
+  material_color_utilities:
+    dependency: transitive
+    description:
+      name: material_color_utilities
+      sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.5.0"
+  meta:
+    dependency: transitive
+    description:
+      name: meta
+      sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.10.0"
+  path:
+    dependency: transitive
+    description:
+      name: path
+      sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.8.3"
+  sky_engine:
+    dependency: transitive
+    description: flutter
+    source: sdk
+    version: "0.0.99"
+  source_span:
+    dependency: transitive
+    description:
+      name: source_span
+      sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.10.0"
+  stack_trace:
+    dependency: transitive
+    description:
+      name: stack_trace
+      sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.11.1"
+  stream_channel:
+    dependency: transitive
+    description:
+      name: stream_channel
+      sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.1.2"
+  string_scanner:
+    dependency: transitive
+    description:
+      name: string_scanner
+      sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.2.0"
+  term_glyph:
+    dependency: transitive
+    description:
+      name: term_glyph
+      sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.2.1"
+  test_api:
+    dependency: transitive
+    description:
+      name: test_api
+      sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.6.1"
+  vector_math:
+    dependency: transitive
+    description:
+      name: vector_math
+      sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.1.4"
+  web:
+    dependency: transitive
+    description:
+      name: web
+      sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.3.0"
+sdks:
+  dart: ">=3.2.4 <4.0.0"

+ 87 - 0
yxlj_flutter/pubspec.yaml

@@ -0,0 +1,87 @@
+name: yxlj_flutter
+description: "A new Flutter module project."
+
+# The following defines the version and build number for your application.
+# A version number is three numbers separated by dots, like 1.2.43
+# followed by an optional build number separated by a +.
+# Both the version and the builder number may be overridden in flutter
+# build by specifying --build-name and --build-number, respectively.
+# In Android, build-name is used as versionName while build-number used as versionCode.
+# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
+# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
+# Read more about iOS versioning at
+# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
+#
+# This version is used _only_ for the Runner app, which is used if you just do
+# a `flutter run` or a `flutter make-host-app-editable`. It has no impact
+# on any other native host app that you embed your Flutter project into.
+version: 1.0.0+1
+
+environment:
+  sdk: '>=3.2.4 <4.0.0'
+
+dependencies:
+  flutter:
+    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
+
+dev_dependencies:
+  flutter_test:
+    sdk: flutter
+  flutter_lints: ^2.0.0
+
+# For information on the generic Dart part of this file, see the
+# following page: https://dart.dev/tools/pub/pubspec
+
+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 Flutter specific assets to your application, add an assets section,
+  # like this:
+  # assets:
+  #   - images/a_dot_burr.jpeg
+  #   - images/a_dot_ham.jpeg
+
+  # An image asset can refer to one or more resolution-specific "variants", see
+  # https://flutter.dev/assets-and-images/#resolution-aware
+
+  # For details regarding adding assets from package dependencies, see
+  # https://flutter.dev/assets-and-images/#from-packages
+
+  # To add Flutter specific custom fonts to your application, add a fonts
+  # section here, in this "flutter" section. Each entry in this list should
+  # have a "family" key with the font family name, and a "fonts" key with a
+  # list giving the asset and other descriptors for the font. For
+  # example:
+  # fonts:
+  #   - family: Schyler
+  #     fonts:
+  #       - asset: fonts/Schyler-Regular.ttf
+  #       - asset: fonts/Schyler-Italic.ttf
+  #         style: italic
+  #   - family: Trajan Pro
+  #     fonts:
+  #       - asset: fonts/TrajanPro.ttf
+  #       - asset: fonts/TrajanPro_Bold.ttf
+  #         weight: 700
+  #
+  # For details regarding fonts from package dependencies,
+  # see https://flutter.dev/custom-fonts/#from-packages
+
+
+  # This section identifies your Flutter project as a module meant for
+  # embedding in a native host app.  These identifiers should _not_ ordinarily
+  # be changed after generation - they are used to ensure that the tooling can
+  # maintain consistency when adding or modifying assets and plugins.
+  # They also do not have any bearing on your native host application's
+  # identifiers, which may be completely independent or the same as these.
+  module:
+    androidX: true
+    androidPackage: com.example.yxlj_flutter
+    iosBundleIdentifier: com.example.yxljFlutter

+ 30 - 0
yxlj_flutter/test/widget_test.dart

@@ -0,0 +1,30 @@
+// This is a basic Flutter widget test.
+//
+// To perform an interaction with a widget in your test, use the WidgetTester
+// utility in the flutter_test package. For example, you can send tap and scroll
+// gestures. You can also use WidgetTester to find child widgets in the widget
+// tree, read text, and verify that the values of widget properties are correct.
+
+import 'package:flutter/material.dart';
+import 'package:flutter_test/flutter_test.dart';
+
+import 'package:yxlj_flutter/main.dart';
+
+void main() {
+  testWidgets('Counter increments smoke test', (WidgetTester tester) async {
+    // Build our app and trigger a frame.
+    await tester.pumpWidget(const MyApp());
+
+    // Verify that our counter starts at 0.
+    expect(find.text('0'), findsOneWidget);
+    expect(find.text('1'), findsNothing);
+
+    // Tap the '+' icon and trigger a frame.
+    await tester.tap(find.byIcon(Icons.add));
+    await tester.pump();
+
+    // Verify that our counter has incremented.
+    expect(find.text('0'), findsNothing);
+    expect(find.text('1'), findsOneWidget);
+  });
+}

+ 18 - 0
yxlj_flutter/yxlj_flutter.iml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/lib" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
+      <excludeFolder url="file://$MODULE_DIR$/.idea" />
+      <excludeFolder url="file://$MODULE_DIR$/build" />
+      <excludeFolder url="file://$MODULE_DIR$/.dart_tool" />
+      <excludeFolder url="file://$MODULE_DIR$/.pub" />
+    </content>
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="Dart SDK" level="project" />
+    <orderEntry type="library" name="Flutter Plugins" level="project" />
+    <orderEntry type="library" name="Dart Packages" level="project" />
+  </component>
+</module>

+ 27 - 0
yxlj_flutter/yxlj_flutter_android.iml

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="android" name="Android">
+      <configuration>
+        <option name="ALLOW_USER_CONFIGURATION" value="false" />
+        <option name="GEN_FOLDER_RELATIVE_PATH_APT" value="/.android/gen" />
+        <option name="GEN_FOLDER_RELATIVE_PATH_AIDL" value="/.android/gen" />
+        <option name="MANIFEST_FILE_RELATIVE_PATH" value="/.android/AndroidManifest.xml" />
+        <option name="RES_FOLDER_RELATIVE_PATH" value="/.android/res" />
+        <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/.android/assets" />
+        <option name="LIBS_FOLDER_RELATIVE_PATH" value="/.android/libs" />
+        <option name="PROGUARD_LOGS_FOLDER_RELATIVE_PATH" value="/.android/proguard_logs" />
+      </configuration>
+    </facet>
+  </component>
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$/.android">
+      <sourceFolder url="file://$MODULE_DIR$/.android/Flutter/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/.android/gen" isTestSource="false" generated="true" />
+    </content>
+    <orderEntry type="jdk" jdkName="Android API 29 Platform" jdkType="Android SDK" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="Flutter for Android" level="project" />
+  </component>
+</module>

Some files were not shown because too many files changed in this diff