├── .flutter-plugins-dependencies ├── .gitignore ├── .metadata ├── README.md ├── android ├── app │ ├── build.gradle │ └── src │ │ ├── debug │ │ └── AndroidManifest.xml │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── flutter_demo │ │ │ │ ├── App.java │ │ │ │ ├── LauncherActivity.java │ │ │ │ └── MainActivity.java │ │ └── res │ │ │ ├── drawable │ │ │ └── launch_background.xml │ │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxxhdpi │ │ │ └── ic_launcher.png │ │ │ └── values │ │ │ └── styles.xml │ │ └── profile │ │ └── AndroidManifest.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ └── gradle-wrapper.properties ├── settings.gradle └── settings_aar.gradle ├── external_texture_plugin ├── .gitignore ├── .metadata ├── CHANGELOG.md ├── LICENSE ├── README.md ├── android │ ├── .gitignore │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ ├── settings.gradle │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── com │ │ └── julyyu │ │ └── external_texture_plugin │ │ ├── ExternalTexturePlugin.java │ │ ├── ExternaltexturepluginPlugintt.kt │ │ ├── SurfaceTextureFactory.java │ │ ├── SurfaceTextureInfoEntity.java │ │ └── cache │ │ └── TextureLruCache.java ├── example │ ├── .gitignore │ ├── .metadata │ ├── README.md │ ├── android │ │ ├── .gitignore │ │ ├── app │ │ │ ├── build.gradle │ │ │ └── src │ │ │ │ ├── debug │ │ │ │ └── AndroidManifest.xml │ │ │ │ ├── main │ │ │ │ ├── AndroidManifest.xml │ │ │ │ ├── kotlin │ │ │ │ │ └── com │ │ │ │ │ │ └── julyyu │ │ │ │ │ │ └── externaltextureplugin_example │ │ │ │ │ │ └── MainActivity.kt │ │ │ │ └── res │ │ │ │ │ ├── drawable │ │ │ │ │ └── launch_background.xml │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ └── values │ │ │ │ │ └── styles.xml │ │ │ │ └── profile │ │ │ │ └── AndroidManifest.xml │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ └── gradle-wrapper.properties │ │ └── settings.gradle │ ├── ios │ │ ├── .gitignore │ │ ├── Flutter │ │ │ ├── AppFrameworkInfo.plist │ │ │ ├── Debug.xcconfig │ │ │ └── Release.xcconfig │ │ ├── Podfile │ │ ├── Runner.xcodeproj │ │ │ ├── project.pbxproj │ │ │ ├── project.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ └── xcshareddata │ │ │ │ └── xcschemes │ │ │ │ └── Runner.xcscheme │ │ ├── Runner.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ └── WorkspaceSettings.xcsettings │ │ └── Runner │ │ │ ├── AppDelegate.swift │ │ │ ├── Assets.xcassets │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ │ └── LaunchImage.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── LaunchImage.png │ │ │ │ ├── LaunchImage@2x.png │ │ │ │ ├── LaunchImage@3x.png │ │ │ │ └── README.md │ │ │ ├── Base.lproj │ │ │ ├── LaunchScreen.storyboard │ │ │ └── Main.storyboard │ │ │ ├── Info.plist │ │ │ └── Runner-Bridging-Header.h │ ├── lib │ │ ├── demo │ │ │ ├── NetworkImageWithoutAuth.dart │ │ │ ├── fade_in_iamge.dart │ │ │ ├── flutter_image_list_demo.dart │ │ │ ├── image_list_demo.dart │ │ │ ├── mock.dart │ │ │ ├── texture_grid_demo.dart │ │ │ ├── texture_image_widget.dart │ │ │ ├── texture_list_demo.dart │ │ │ ├── texture_main_demo.dart │ │ │ ├── texture_single_demo.dart │ │ │ ├── texture_single_external_demo.dart │ │ │ └── texture_style_external_demo.dart │ │ └── main.dart │ ├── pubspec.lock │ ├── pubspec.yaml │ ├── res │ │ └── img │ │ │ └── jay.jpg │ └── test │ │ └── widget_test.dart ├── ios │ ├── .gitignore │ ├── Assets │ │ └── .gitkeep │ ├── Classes │ │ ├── ExternaltexturepluginPlugin.h │ │ ├── ExternaltexturepluginPlugin.m │ │ └── SwiftExternaltexturepluginPlugin.swift │ └── externaltextureplugin.podspec ├── lib │ └── external_texture_plugin.dart ├── pubspec.lock ├── pubspec.yaml └── test │ └── externaltextureplugin_test.dart ├── flutter_annotation ├── .gitignore ├── .metadata ├── CHANGELOG.md ├── LICENSE ├── README.md ├── annotation_sample │ ├── .gitignore │ ├── .metadata │ ├── README.md │ ├── android │ │ ├── .gitignore │ │ ├── app │ │ │ ├── build.gradle │ │ │ └── src │ │ │ │ ├── debug │ │ │ │ └── AndroidManifest.xml │ │ │ │ ├── main │ │ │ │ ├── AndroidManifest.xml │ │ │ │ ├── kotlin │ │ │ │ │ └── com │ │ │ │ │ │ └── example │ │ │ │ │ │ └── annotation_sample │ │ │ │ │ │ └── MainActivity.kt │ │ │ │ └── res │ │ │ │ │ ├── drawable-v21 │ │ │ │ │ └── launch_background.xml │ │ │ │ │ ├── drawable │ │ │ │ │ └── launch_background.xml │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── values-night │ │ │ │ │ └── styles.xml │ │ │ │ │ └── values │ │ │ │ │ └── styles.xml │ │ │ │ └── profile │ │ │ │ └── AndroidManifest.xml │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ └── gradle-wrapper.properties │ │ └── settings.gradle │ ├── ios │ │ ├── .gitignore │ │ ├── Flutter │ │ │ ├── AppFrameworkInfo.plist │ │ │ ├── Debug.xcconfig │ │ │ └── Release.xcconfig │ │ ├── Runner.xcodeproj │ │ │ ├── project.pbxproj │ │ │ ├── project.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ └── xcshareddata │ │ │ │ └── xcschemes │ │ │ │ └── Runner.xcscheme │ │ ├── Runner.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ └── WorkspaceSettings.xcsettings │ │ └── Runner │ │ │ ├── AppDelegate.swift │ │ │ ├── Assets.xcassets │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ │ └── LaunchImage.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── LaunchImage.png │ │ │ │ ├── LaunchImage@2x.png │ │ │ │ ├── LaunchImage@3x.png │ │ │ │ └── README.md │ │ │ ├── Base.lproj │ │ │ ├── LaunchScreen.storyboard │ │ │ └── Main.storyboard │ │ │ ├── Info.plist │ │ │ └── Runner-Bridging-Header.h │ ├── lib │ │ ├── main.dart │ │ ├── mark_demo.dart │ │ ├── mark_demo.mark.dart │ │ ├── widget_demo.dart │ │ └── widget_demo.widget.dart │ ├── pubspec.lock │ └── pubspec.yaml ├── build.yaml ├── lib │ ├── builder.dart │ ├── generator.dart │ └── mark.dart ├── pubspec.lock └── pubspec.yaml ├── flutter_app_plugin ├── .gitignore ├── .metadata ├── CHANGELOG.md ├── LICENSE ├── README.md ├── android │ ├── .gitignore │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ ├── res │ │ └── values │ │ │ └── strings_en.arb │ ├── settings.gradle │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── hjapp │ │ │ ├── flutter_app_plugin │ │ │ └── FlutterAppPlugin.java │ │ │ └── ui │ │ │ └── activity │ │ │ ├── MessengerActivity.java │ │ │ └── WebActivity.java │ │ └── res │ │ ├── drawable │ │ └── jay.jpg │ │ └── values │ │ ├── colors.xml │ │ └── styles.xml ├── example │ ├── .flutter-plugins-dependencies │ ├── .gitignore │ ├── .metadata │ ├── README.md │ ├── android │ │ ├── app │ │ │ ├── build.gradle │ │ │ └── src │ │ │ │ ├── debug │ │ │ │ └── AndroidManifest.xml │ │ │ │ ├── main │ │ │ │ ├── AndroidManifest.xml │ │ │ │ ├── java │ │ │ │ │ └── com │ │ │ │ │ │ └── hjapp │ │ │ │ │ │ └── flutter_app_plugin_example │ │ │ │ │ │ └── MainActivity.java │ │ │ │ └── res │ │ │ │ │ ├── drawable │ │ │ │ │ └── launch_background.xml │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ └── values │ │ │ │ │ └── styles.xml │ │ │ │ └── profile │ │ │ │ └── AndroidManifest.xml │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ └── gradle-wrapper.properties │ │ └── settings.gradle │ ├── ios │ │ ├── Flutter │ │ │ ├── AppFrameworkInfo.plist │ │ │ ├── Debug.xcconfig │ │ │ └── Release.xcconfig │ │ ├── Podfile │ │ ├── Runner.xcodeproj │ │ │ ├── project.pbxproj │ │ │ ├── project.xcworkspace │ │ │ │ └── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ └── xcschemes │ │ │ │ └── Runner.xcscheme │ │ ├── Runner.xcworkspace │ │ │ └── contents.xcworkspacedata │ │ └── Runner │ │ │ ├── AppDelegate.h │ │ │ ├── AppDelegate.m │ │ │ ├── Assets.xcassets │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ │ └── LaunchImage.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── LaunchImage.png │ │ │ │ ├── LaunchImage@2x.png │ │ │ │ ├── LaunchImage@3x.png │ │ │ │ └── README.md │ │ │ ├── Base.lproj │ │ │ ├── LaunchScreen.storyboard │ │ │ └── Main.storyboard │ │ │ ├── Info.plist │ │ │ └── main.m │ ├── lib │ │ └── main.dart │ ├── pubspec.lock │ └── pubspec.yaml ├── ios │ ├── .gitignore │ ├── Assets │ │ └── .gitkeep │ ├── Classes │ │ ├── FlutterAppPlugin.h │ │ └── FlutterAppPlugin.m │ └── flutter_app_plugin.podspec ├── lib │ ├── flutter_app_plugin.dart │ └── generated │ │ └── i18n.dart ├── pubspec.lock ├── pubspec.yaml ├── res │ └── values │ │ └── strings_en.arb └── test │ └── flutter_app_plugin_test.dart ├── flutter_dev_package ├── .gitignore ├── .metadata ├── CHANGELOG.md ├── LICENSE ├── README.md ├── lib │ ├── TestWidget.dart │ ├── debug_widget.dart │ └── flutterdevpackage.dart ├── pubspec.lock ├── pubspec.yaml └── test │ └── flutterdevpackage_test.dart ├── flutter_release_package ├── .gitignore ├── .metadata ├── CHANGELOG.md ├── LICENSE ├── README.md ├── lib │ ├── TestWidget.dart │ ├── TestWidget2.dart │ ├── debug_widget.dart │ └── flutterreleasepackage.dart ├── pubspec.lock ├── pubspec.yaml └── test │ └── flutterreleasepackage_test.dart ├── flutter_template ├── .gitignore ├── .metadata ├── CHANGELOG.md ├── LICENSE ├── README.md ├── lib │ ├── flutter_temple.dart │ └── src │ │ ├── net │ │ └── h_net_client.dart │ │ ├── utils │ │ ├── h_date_util.dart │ │ └── h_dialog_util.dart │ │ └── widgets │ │ ├── h_bottom_nav_page.dart │ │ ├── h_loading_view.dart │ │ └── j_container.dart ├── pubspec.lock └── pubspec.yaml ├── images ├── 1.png ├── 2.png ├── 3.png ├── bg0.jpeg ├── bg1.jpeg ├── bg2.jpeg ├── bg3.jpeg ├── bigimage.jpeg ├── bigimage.webp ├── gif_player_demo.gif ├── gif_player_one.gif ├── ic_love_gif.gif ├── ic_love_gif.webp ├── icon_left_sliver.png ├── p1.jpeg ├── p2.jpeg ├── p3.jpeg ├── p4.jpeg ├── p5.jpeg └── res │ ├── wa1.png │ ├── wa2.png │ ├── wa3.png │ ├── wa4.png │ ├── wa5.png │ ├── wa6.png │ └── wa7.png ├── ios ├── Flutter │ ├── AppFrameworkInfo.plist │ ├── Debug.xcconfig │ └── Release.xcconfig ├── Podfile ├── Podfile.lock ├── Runner.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── xcshareddata │ │ └── xcschemes │ │ └── Runner.xcscheme ├── Runner.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist └── Runner │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ ├── Contents.json │ │ ├── Icon-App-1024x1024@1x.png │ │ ├── Icon-App-20x20@1x.png │ │ ├── Icon-App-20x20@2x.png │ │ ├── Icon-App-20x20@3x.png │ │ ├── Icon-App-29x29@1x.png │ │ ├── Icon-App-29x29@2x.png │ │ ├── Icon-App-29x29@3x.png │ │ ├── Icon-App-40x40@1x.png │ │ ├── Icon-App-40x40@2x.png │ │ ├── Icon-App-40x40@3x.png │ │ ├── Icon-App-60x60@2x.png │ │ ├── Icon-App-60x60@3x.png │ │ ├── Icon-App-76x76@1x.png │ │ ├── Icon-App-76x76@2x.png │ │ └── Icon-App-83.5x83.5@2x.png │ └── LaunchImage.imageset │ │ ├── Contents.json │ │ ├── LaunchImage.png │ │ ├── LaunchImage@2x.png │ │ ├── LaunchImage@3x.png │ │ └── README.md │ ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard │ ├── Info.plist │ └── main.m ├── lib ├── base │ └── base_widget_ui.dart ├── contents │ └── widget.dart ├── demo │ ├── animation │ │ ├── animatedBuilder_demo.dart │ │ ├── animatedContainer_demo.dart │ │ ├── animatedWidget_demo.dart │ │ ├── animationController_demo.dart │ │ ├── animation_demo.dart │ │ └── animation_live_demo.dart │ ├── appbar │ │ └── sliver_appbar_demo.dart │ ├── crash │ │ └── crash_demo.dart │ ├── dart │ │ ├── async_demo.dart │ │ ├── isolate_demo.dart │ │ ├── plugin_channel_demo.dart │ │ ├── stream_demo.dart │ │ ├── timer_demo.dart │ │ └── zone_demo.dart │ ├── drawer │ │ ├── drag_drawer_demo.dart │ │ ├── drag_drawer_view.dart │ │ └── gesture_drag_drawerx.dart │ ├── flip │ │ ├── flip_demo.dart │ │ └── flip_num_text.dart │ ├── floatbox │ │ ├── app_float_box.dart │ │ ├── float_dragable_demo.dart │ │ ├── float_overlay_demo.dart │ │ └── float_stack_demo.dart │ ├── gesture │ │ ├── gestrue_scale_demo1.dart │ │ ├── gestrue_scale_demo2.dart │ │ ├── gesture_click_demo.dart │ │ ├── gesture_drag_demo.dart │ │ └── gesture_scale_demo.dart │ ├── lifecycle │ │ ├── statefullifecycle_demo.dart │ │ └── statelessLifecycle_demo.dart │ ├── pageview │ │ ├── costom_page_view.dart │ │ ├── pageview_demo.dart │ │ ├── pageview_demo2.dart │ │ ├── pageview_demo3.dart │ │ ├── pageview_demo4.dart │ │ ├── pageview_demo5.dart │ │ ├── pageview_demo6.dart │ │ └── paging_scroll_physics.dart │ ├── painter │ │ ├── canvas_douyin_demo.dart │ │ └── painter_demo.dart │ ├── router │ │ ├── router_ani_demo.dart │ │ ├── router_data_demo.dart │ │ └── router_demo.dart │ ├── scroll │ │ └── scroll_demo.dart │ ├── sliver │ │ ├── sliver_demo.dart │ │ ├── sliver_tabbar_demo.dart │ │ ├── sliver_tabbar_demo2.dart │ │ └── sliver_tabbar_demo3.dart │ ├── tabbar │ │ ├── custom_tab.dart │ │ ├── dynamic_page.dart │ │ ├── no_gradient_tabbarx.dart │ │ ├── no_gradient_tabbarxx.dart │ │ ├── no_tabbar.dart │ │ ├── tabbar_demo1.dart │ │ ├── tabbar_demo11.dart │ │ ├── tabbar_demo111.dart │ │ ├── tabbar_demo2.dart │ │ ├── tabbar_demo3.dart │ │ ├── tabbar_demo_page.dart │ │ ├── tabbar_demox11.dart │ │ ├── tabs.dart │ │ ├── underLineIndicator.dart │ │ ├── under_line_indicatorx.dart │ │ ├── under_line_indicatorxx.dart │ │ └── under_liner_normal.dart │ ├── text │ │ ├── text_demo1.dart │ │ └── text_demo2.dart │ ├── texture │ │ ├── flutter_image_demo.dart │ │ ├── mock.dart │ │ ├── texture_grid_demo.dart │ │ ├── texture_image_widget.dart │ │ ├── texture_list_demo.dart │ │ ├── texture_main_demo.dart │ │ ├── texture_single_demo.dart │ │ └── texture_single_external_demo.dart │ └── video │ │ └── video_demo.dart ├── demo_page.dart ├── home_page.dart ├── magic │ ├── animation │ │ ├── README.md │ │ ├── j_animation_controller.dart │ │ ├── j_animation_info.dart │ │ ├── j_animation_widget.dart │ │ ├── super_animation.dart │ │ └── test_animation_demo.dart │ ├── animation_group │ │ ├── animations.dart │ │ ├── manager │ │ │ ├── animation_driver.dart │ │ │ └── animation_manager.dart │ │ ├── parameter │ │ │ ├── animation_group.dart │ │ │ └── animation_part.dart │ │ └── widget │ │ │ └── animation_group_widget.dart │ ├── diy_color_box.dart │ ├── diy_flexible_space_widget.dart │ ├── diy_flexible_top_header.dart │ ├── diy_refresh.dart │ ├── diy_scroll_physics.dart │ ├── diy_sliver_border.dart │ ├── diy_sliver_customer.dart │ ├── diy_sliver_header.dart │ ├── diy_tab_controller.dart │ ├── diy_tabs.dart │ ├── diy_transformer_background_widget.dart │ ├── diy_wrap.dart │ ├── gif_image.dart │ ├── loadmore │ │ ├── magic_activity_indicator.dart │ │ └── magic_loadmore.dart │ ├── refresh │ │ ├── magic_activity_indicator.dart │ │ ├── magic_refresh.dart │ │ └── magic_refresh2.dart │ ├── scrollview │ │ └── magic_nested_scroll_view.dart │ ├── side_pull_indicator.dart │ ├── sliver │ │ ├── magic_app_bar.dart │ │ └── magic_flexible_space_bar.dart │ ├── sprite │ │ └── sprite_image.dart │ └── tab │ │ ├── magic_tab_indicator.dart │ │ └── magic_tabs.dart ├── main.dart ├── mock │ └── img_mock.dart ├── other │ ├── debug_channle_demo.dart │ ├── debug_import.dart │ ├── debug_list_list_demo.dart │ ├── dependy_widget_demo.dart │ └── mockdouyin │ │ └── mock_douyin_page.dart ├── page │ ├── common │ │ └── common.dart │ ├── dart │ │ ├── future_wait_demo.dart │ │ ├── list_demo.dart │ │ ├── map_demo.dart │ │ └── stream_demo.dart │ ├── dev │ │ ├── bar_snap_demo.dart │ │ ├── clippath_image_shape_demo.dart │ │ ├── complex_page_demo2.dart │ │ ├── crash_demo.dart │ │ ├── diy_scroll_demo.dart │ │ ├── flex_tabbar_page_demo1 │ │ │ ├── complex_page_demo1.dart │ │ │ ├── simple_tab_bar_page.dart │ │ │ └── sub_tab_list_page.dart │ │ ├── floatingframe │ │ │ ├── app_float_box.dart │ │ │ ├── float_dragable_demo.dart │ │ │ ├── float_overlay_demo.dart │ │ │ └── float_stack_demo.dart │ │ ├── gif_play_one_bug_demo.dart │ │ ├── gif_player_demo.dart │ │ ├── horizontal_wrap_barrage_demo.dart │ │ ├── image_combined_animation_demo.dart │ │ ├── list_jump_init_demo.dart │ │ ├── list_scrool_change_demo.dart │ │ ├── native_demo.dart │ │ ├── navigator_router_demo.dart │ │ ├── nestedscroll_page_demo.dart │ │ ├── nestedscroll_tabbar_list_demo.dart │ │ ├── one_line_warp_demo.dart │ │ ├── page_cache_demo.dart │ │ ├── reuse_key_list_demo.dart │ │ ├── row_text_with_icon_demo.dart │ │ ├── scale_widget_demo.dart │ │ ├── secondfloor │ │ │ ├── floor_refresh.dart │ │ │ └── refresh_keep_second_floor_demo.dart │ │ ├── side_pull_demo.dart │ │ ├── sliver_border_demo.dart │ │ ├── sliver_customer_demo.dart │ │ ├── sliver_refresh_demo.dart │ │ ├── tabbar_add_jump_demo.dart │ │ ├── tabbar_switch_demo.dart │ │ ├── textField_focus_demo.dart │ │ ├── text_chinese_english_demo.dart │ │ └── webp_bug_demo.dart │ ├── diy │ │ ├── appbar │ │ │ └── custom_app_bar_demo.dart │ │ ├── carousel │ │ │ ├── carousel.dart │ │ │ └── carousel_demo.dart │ │ ├── circlelist │ │ │ ├── CircleList.dart │ │ │ ├── RadialDragGestureDetector.dart │ │ │ ├── circle_list_demo.dart │ │ │ └── other │ │ │ │ ├── circle_3d_list.dart │ │ │ │ └── radialdrag_gesturedetector.dart │ │ ├── download │ │ │ ├── download_container.dart │ │ │ ├── download_controller.dart │ │ │ ├── download_demo.dart │ │ │ ├── download_manager.dart │ │ │ ├── encrypt_utils.dart │ │ │ ├── file_utils.dart │ │ │ ├── unzip_container.dart │ │ │ └── unzip_mamager.dart │ │ ├── draggridview │ │ │ └── diy_drag_gridview_demo.dart │ │ ├── draglistview │ │ │ ├── DIYReorderableListView.dart │ │ │ ├── SliverReorderGridView.dart │ │ │ ├── SliverReorderListView.dart │ │ │ └── sliver_reorder_listview_demo.dart │ │ ├── drawer │ │ │ ├── drag_drawer_demo.dart │ │ │ ├── drag_drawer_view.dart │ │ │ └── gesture_drag_drawerx.dart │ │ ├── emoji │ │ │ └── emoji_demo.dart │ │ ├── flip │ │ │ ├── flip_demo.dart │ │ │ └── flip_num_text.dart │ │ ├── loadmore │ │ │ ├── custom_loadmore_demo.dart │ │ │ └── custom_simple_loadmore_demo.dart │ │ ├── preview │ │ │ ├── full_size_image_view_copy.dart │ │ │ └── image_preview_animation_demo.dart │ │ ├── refresh │ │ │ └── custom_refresh_demo.dart │ │ ├── shoppage │ │ │ ├── page1.dart │ │ │ ├── page2.dart │ │ │ ├── page3.dart │ │ │ ├── shop │ │ │ │ ├── shop_scroll_controller.dart │ │ │ │ ├── shop_scroll_coordinator.dart │ │ │ │ └── shop_scroll_position.dart │ │ │ └── shop_page_demo.dart │ │ ├── sprite │ │ │ └── custome_sprite_demo.dart │ │ ├── tabbar │ │ │ └── diy_tabbar_demo.dart │ │ └── wheel │ │ │ ├── diy_list_wheel_scroll_view.dart │ │ │ ├── diy_list_wheel_scroll_view2.dart │ │ │ ├── diy_list_wheel_viewport.dart │ │ │ ├── diy_list_wheel_viewport2.dart │ │ │ └── list_wheel_diy_demo.dart │ ├── func │ │ ├── func_file_path_demo.dart │ │ ├── func_matrix4_demo.dart │ │ ├── func_matrix4_pentagon_demo.dart │ │ └── func_matrix4_u_demo.dart │ ├── layout │ │ └── test_how_to_refresh_ui_demo.dart │ ├── lib │ │ ├── cache_image_demo.dart │ │ ├── charts_flutter_demo.dart │ │ ├── extended_nested_scroll │ │ │ ├── extended_nested_scroll_view.dart │ │ │ └── src │ │ │ │ ├── extended_nested_scroll_view.dart │ │ │ │ ├── extended_nested_scroll_view_part.dart │ │ │ │ └── extended_visibility_detector.dart │ │ ├── extened_nested_scroll_view_demo.dart │ │ ├── fishredux │ │ │ ├── demopage1 │ │ │ │ ├── action.dart │ │ │ │ ├── childview │ │ │ │ │ ├── action.dart │ │ │ │ │ ├── component.dart │ │ │ │ │ ├── effect.dart │ │ │ │ │ ├── reducer.dart │ │ │ │ │ ├── state.dart │ │ │ │ │ └── view.dart │ │ │ │ ├── effect.dart │ │ │ │ ├── page.dart │ │ │ │ ├── reducer.dart │ │ │ │ ├── state.dart │ │ │ │ └── view.dart │ │ │ ├── demopage2 │ │ │ │ ├── FishModel.dart │ │ │ │ ├── action.dart │ │ │ │ ├── effect.dart │ │ │ │ ├── page.dart │ │ │ │ ├── reducer.dart │ │ │ │ ├── state.dart │ │ │ │ └── view.dart │ │ │ ├── demopage3 │ │ │ │ ├── action.dart │ │ │ │ ├── effect.dart │ │ │ │ ├── headerview │ │ │ │ │ ├── action.dart │ │ │ │ │ ├── component.dart │ │ │ │ │ ├── effect.dart │ │ │ │ │ ├── reducer.dart │ │ │ │ │ ├── state.dart │ │ │ │ │ └── view.dart │ │ │ │ ├── itemcell │ │ │ │ │ ├── action.dart │ │ │ │ │ ├── component.dart │ │ │ │ │ ├── effect.dart │ │ │ │ │ ├── reducer.dart │ │ │ │ │ ├── state.dart │ │ │ │ │ └── view.dart │ │ │ │ ├── list │ │ │ │ │ ├── action.dart │ │ │ │ │ ├── adapter.dart │ │ │ │ │ └── state.dart │ │ │ │ ├── page.dart │ │ │ │ ├── reducer.dart │ │ │ │ ├── state.dart │ │ │ │ └── view.dart │ │ │ ├── demopage4 │ │ │ │ ├── action.dart │ │ │ │ ├── child │ │ │ │ │ ├── action.dart │ │ │ │ │ ├── component.dart │ │ │ │ │ ├── effect.dart │ │ │ │ │ ├── reducer.dart │ │ │ │ │ ├── state.dart │ │ │ │ │ └── view.dart │ │ │ │ ├── effect.dart │ │ │ │ ├── main │ │ │ │ │ ├── action.dart │ │ │ │ │ ├── component.dart │ │ │ │ │ ├── effect.dart │ │ │ │ │ ├── reducer.dart │ │ │ │ │ ├── state.dart │ │ │ │ │ └── view.dart │ │ │ │ ├── page.dart │ │ │ │ ├── reducer.dart │ │ │ │ ├── state.dart │ │ │ │ └── view.dart │ │ │ ├── fish_redux_demo.dart │ │ │ └── list │ │ │ │ ├── action.dart │ │ │ │ ├── adapter │ │ │ │ ├── action.dart │ │ │ │ ├── adapter.dart │ │ │ │ ├── reducer.dart │ │ │ │ └── state.dart │ │ │ │ ├── effect.dart │ │ │ │ ├── page.dart │ │ │ │ ├── reducer.dart │ │ │ │ ├── state.dart │ │ │ │ ├── view.dart │ │ │ │ └── view │ │ │ │ ├── action.dart │ │ │ │ ├── component.dart │ │ │ │ ├── effect.dart │ │ │ │ ├── reducer.dart │ │ │ │ ├── state.dart │ │ │ │ └── view.dart │ │ ├── flutter_redux_demo.dart │ │ ├── gif_controller_demo.dart │ │ ├── http_demo.dart │ │ ├── httpserver_demo.dart │ │ ├── lottie_demo.dart │ │ ├── over_nested_scroll │ │ │ ├── custom_nested_scroll_view.dart │ │ │ └── src │ │ │ │ ├── custom_nested_scroll_view.dart │ │ │ │ ├── nested_scroll_view.dart │ │ │ │ ├── nested_scroll_view_x.dart │ │ │ │ └── nested_scroll_view_y.dart │ │ ├── over_nested_scroll_demo.dart │ │ ├── photo_view │ │ │ ├── photo_view.dart │ │ │ ├── photo_view_gallery.dart │ │ │ └── src │ │ │ │ ├── controller │ │ │ │ ├── photo_view_controller.dart │ │ │ │ ├── photo_view_controller_delegate.dart │ │ │ │ └── photo_view_scalestate_controller.dart │ │ │ │ ├── core │ │ │ │ ├── photo_view_core.dart │ │ │ │ ├── photo_view_gesture_detector.dart │ │ │ │ └── photo_view_hit_corners.dart │ │ │ │ ├── keeping_widget_alive.dart │ │ │ │ ├── photo_view_computed_scale.dart │ │ │ │ ├── photo_view_default_widgets.dart │ │ │ │ ├── photo_view_scale_state.dart │ │ │ │ ├── photo_view_wrappers.dart │ │ │ │ └── utils │ │ │ │ ├── ignorable_change_notifier.dart │ │ │ │ ├── photo_view_hero_attributes.dart │ │ │ │ └── photo_view_utils.dart │ │ ├── photo_view_demo.dart │ │ ├── redux_demo.dart │ │ ├── refresh_demo.dart │ │ ├── staggered_demo.dart │ │ ├── swiper_demo.dart │ │ ├── transformer_demo.dart │ │ ├── video_demo.dart │ │ ├── waterfall │ │ │ ├── src │ │ │ │ ├── rendering │ │ │ │ │ └── sliver_waterfall_flow.dart │ │ │ │ └── widgets │ │ │ │ │ ├── scroll_view.dart │ │ │ │ │ └── sliver.dart │ │ │ └── waterfall_flow.dart │ │ └── waterfall_demo.dart │ └── widget │ │ ├── animation │ │ ├── animate_builder_demo.dart │ │ ├── clip_animation_demo.dart │ │ ├── hero_animation_demo.dart │ │ ├── scale_transition_animation_demo.dart │ │ └── size_transition_animation_demo.dart │ │ ├── canvas │ │ ├── canvas_circle_demo.dart │ │ ├── canvas_dash_board_demo.dart │ │ └── canvas_douyin_demo.dart │ │ ├── common_widget_demo.dart │ │ ├── gesture │ │ ├── gestrue_scale_demo1.dart │ │ ├── gestrue_scale_demo2.dart │ │ ├── gesture_behavior_demo.dart │ │ ├── gesture_click_demo.dart │ │ ├── gesture_drag_demo.dart │ │ └── gesture_scale_demo.dart │ │ ├── image │ │ ├── big_height_image_demo.dart │ │ ├── image_page_view_demo.dart │ │ └── image_view_demo.dart │ │ ├── layout │ │ ├── layout_flow_demo.dart │ │ └── layout_wrap_demo.dart │ │ ├── list │ │ ├── list_auto_scroll_demo.dart │ │ ├── list_pull_refresh_demo.dart │ │ └── list_wheel_demo.dart │ │ ├── scrollview │ │ ├── NestedClampingScrollPhysics.dart │ │ ├── custom_scroll_demo.dart │ │ └── nested_scroll_demo.dart │ │ ├── sliver │ │ ├── sliver_demo.dart │ │ ├── sliver_grid_demo.dart │ │ ├── sliver_list_demo.dart │ │ └── sliver_prototype_extentList_demo.dart │ │ ├── tab │ │ ├── page_view_demo.dart │ │ └── tabbar_view_demo.dart │ │ └── text │ │ ├── text_align_demo.dart │ │ └── text_with_icon_demo.dart ├── simple_import.dart ├── table_contents.dart ├── thrid_libs │ ├── flutter_redux │ │ └── flutter_redux.dart │ └── redux │ │ └── redux.dart └── ui │ ├── Inherited_view_demo.dart │ ├── bottom_nav_demo.dart │ ├── click_animation_demo.dart │ ├── container_demo.dart │ ├── dialog_demo.dart │ ├── icon_demo.dart │ ├── image_demo.dart │ ├── image_list_demo.dart │ ├── listview_demo.dart │ ├── scroll_view_demo.dart │ ├── size_demo.dart │ ├── stack_demo.dart │ ├── tab_bar_demo.dart │ ├── table_demo.dart │ ├── textField_demo.dart │ ├── text_demo.dart │ ├── text_list_demo.dart │ └── theme_demo.dart ├── pubspec.lock ├── pubspec.yaml └── res ├── img ├── flower.png ├── ic_run.gif ├── ic_star.png ├── jay.jpg ├── live.png ├── love.png ├── shopping.png ├── start.png ├── user_role.png ├── wa.png └── yellow_start.png └── lottie ├── LottieLogo1.json ├── angel.zip └── loading.json /.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: 760635e6dbf9180222171ac189199982a65cf608 8 | channel: master 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # flutter_demo 2 | 3 | Personal flutter demo:customer widget、sample and etc. 4 | 5 | 6 | 7 | 8 | ## FlutterTemplate(package) 9 | 10 | ### Widgets 11 | * app_bottom_nav_page 12 | 底部导航栏封装,包含页面切换加载。 13 | sample -> bottom_nav_demo 14 | 15 | ### utils 16 | * app_dialog_util 弹窗UI 17 | 18 | ### net 19 | * net_client dio封装的网络请求库 20 | 21 | 22 | ## FlutterAppPlugin(Plugin) 23 | 24 | ### Methods 25 | * nativePage 跳转原生页面接口 26 | 27 | 28 | 29 | 30 | 31 | 32 | ## Demo 33 | 34 | ### CustomerWidget 35 | - FlipText 36 | - DragDrawerView 37 | 38 | ### Sample 39 | - Animation 40 | - Router 41 | - AppBar 42 | - Drawer 43 | - LifeCycle 44 | - Painter 45 | - Scroll -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/java/com/example/flutter_demo/App.java: -------------------------------------------------------------------------------- 1 | package com.example.flutter_demo; 2 | 3 | import android.app.Application; 4 | 5 | public class App extends Application { 6 | 7 | @Override 8 | public void onCreate() { 9 | super.onCreate(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /android/app/src/main/java/com/example/flutter_demo/LauncherActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.flutter_demo; 2 | 3 | import android.os.Bundle; 4 | 5 | import androidx.annotation.Nullable; 6 | import androidx.appcompat.app.AppCompatActivity; 7 | 8 | import io.flutter.embedding.android.FlutterActivity; 9 | import io.flutter.embedding.android.FlutterActivityLaunchConfigs; 10 | 11 | public class LauncherActivity extends FlutterActivity { 12 | 13 | @Override 14 | protected void onCreate(@Nullable Bundle savedInstanceState) { 15 | super.onCreate(savedInstanceState); 16 | 17 | // FlutterActivity.withNewEngine() 18 | // .backgroundMode(FlutterActivityLaunchConfigs.BackgroundMode.opaque) 19 | // .initialRoute("/") 20 | // .build(this); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /android/app/src/main/java/com/example/flutter_demo/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.flutter_demo; 2 | 3 | import android.os.Bundle; 4 | 5 | import androidx.annotation.NonNull; 6 | 7 | import io.flutter.embedding.android.FlutterActivity; 8 | import io.flutter.embedding.android.FlutterActivityLaunchConfigs; 9 | import io.flutter.embedding.android.FlutterFragmentActivity; 10 | 11 | public class MainActivity extends FlutterActivity { 12 | 13 | 14 | 15 | // @NonNull 16 | // @Override 17 | // protected FlutterActivityLaunchConfigs.BackgroundMode getBackgroundMode() { 18 | // return FlutterActivityLaunchConfigs.BackgroundMode.transparent; 19 | // } 20 | } 21 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | // maven { 4 | // url "http://repo.baichuan-android.taobao.com/content/groups/BaichuanRepositories/" 5 | // } 6 | google() 7 | jcenter() 8 | 9 | 10 | } 11 | 12 | dependencies { 13 | classpath 'com.android.tools.build:gradle:3.2.1' 14 | } 15 | } 16 | 17 | allprojects { 18 | repositories { 19 | // maven { 20 | // url "http://repo.baichuan-android.taobao.com/content/groups/BaichuanRepositories/" 21 | // } 22 | google() 23 | jcenter() 24 | } 25 | } 26 | 27 | rootProject.buildDir = '../build' 28 | subprojects { 29 | project.buildDir = "${rootProject.buildDir}/${project.name}" 30 | } 31 | subprojects { 32 | project.evaluationDependsOn(':app') 33 | } 34 | 35 | task clean(type: Delete) { 36 | delete rootProject.buildDir 37 | } 38 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | 3 | android.enableR8=true 4 | android.useAndroidX=true -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip 7 | -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() 4 | 5 | def plugins = new Properties() 6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') 7 | if (pluginsFile.exists()) { 8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } 9 | } 10 | 11 | plugins.each { name, path -> 12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() 13 | include ":$name" 14 | project(":$name").projectDir = pluginDirectory 15 | } 16 | -------------------------------------------------------------------------------- /android/settings_aar.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /external_texture_plugin/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .dart_tool/ 3 | 4 | .packages 5 | .pub/ 6 | 7 | build/ 8 | -------------------------------------------------------------------------------- /external_texture_plugin/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: e6b34c2b5c96bb95325269a29a84e83ed8909b5f 8 | channel: unknown 9 | 10 | project_type: plugin 11 | -------------------------------------------------------------------------------- /external_texture_plugin/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.0.1 2 | 3 | * TODO: Describe initial release. 4 | -------------------------------------------------------------------------------- /external_texture_plugin/LICENSE: -------------------------------------------------------------------------------- 1 | TODO: Add your license here. 2 | -------------------------------------------------------------------------------- /external_texture_plugin/README.md: -------------------------------------------------------------------------------- 1 | # externaltextureplugin 2 | 3 | A new Flutter plugin. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter 8 | [plug-in package](https://flutter.dev/developing-packages/), 9 | a specialized package that includes platform-specific implementation code for 10 | Android and/or iOS. 11 | 12 | For help getting started with Flutter, view our 13 | [online documentation](https://flutter.dev/docs), which offers tutorials, 14 | samples, guidance on mobile development, and a full API reference. 15 | -------------------------------------------------------------------------------- /external_texture_plugin/android/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | -------------------------------------------------------------------------------- /external_texture_plugin/android/build.gradle: -------------------------------------------------------------------------------- 1 | group 'com.julyyu.com.julyyu.externaltextureplugin' 2 | version '1.0-SNAPSHOT' 3 | 4 | buildscript { 5 | ext.kotlin_version = '1.3.50' 6 | repositories { 7 | google() 8 | jcenter() 9 | } 10 | 11 | dependencies { 12 | classpath 'com.android.tools.build:gradle:3.5.0' 13 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 14 | } 15 | } 16 | 17 | rootProject.allprojects { 18 | repositories { 19 | google() 20 | jcenter() 21 | } 22 | } 23 | 24 | apply plugin: 'com.android.library' 25 | apply plugin: 'kotlin-android' 26 | 27 | android { 28 | compileSdkVersion 28 29 | 30 | sourceSets { 31 | main.java.srcDirs += 'src/main/kotlin' 32 | } 33 | defaultConfig { 34 | minSdkVersion 16 35 | } 36 | lintOptions { 37 | disable 'InvalidPackage' 38 | } 39 | } 40 | 41 | dependencies { 42 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 43 | 44 | implementation 'com.github.bumptech.glide:glide:4.11.0' 45 | annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0' 46 | } 47 | -------------------------------------------------------------------------------- /external_texture_plugin/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.enableR8=true 3 | android.useAndroidX=true 4 | android.enableJetifier=true 5 | -------------------------------------------------------------------------------- /external_texture_plugin/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip 6 | -------------------------------------------------------------------------------- /external_texture_plugin/android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'com.julyyu.externaltextureplugin' 2 | -------------------------------------------------------------------------------- /external_texture_plugin/android/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /external_texture_plugin/example/.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | 12 | # IntelliJ related 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | 18 | # The .vscode folder contains launch configuration and tasks you configure in 19 | # VS Code which you may wish to be included in version control, so this line 20 | # is commented out by default. 21 | #.vscode/ 22 | 23 | # Flutter/Dart/Pub related 24 | **/doc/api/ 25 | .dart_tool/ 26 | .flutter-plugins 27 | .flutter-plugins-dependencies 28 | .packages 29 | .pub-cache/ 30 | .pub/ 31 | /build/ 32 | 33 | # Web related 34 | lib/generated_plugin_registrant.dart 35 | 36 | # Symbolication related 37 | app.*.symbols 38 | 39 | # Obfuscation related 40 | app.*.map.json 41 | 42 | # Exceptions to above rules. 43 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages 44 | -------------------------------------------------------------------------------- /external_texture_plugin/example/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: e6b34c2b5c96bb95325269a29a84e83ed8909b5f 8 | channel: unknown 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /external_texture_plugin/example/README.md: -------------------------------------------------------------------------------- 1 | # externaltextureplugin_example 2 | 3 | Demonstrates how to use the externaltextureplugin plugin. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) 13 | 14 | For help getting started with Flutter, view our 15 | [online documentation](https://flutter.dev/docs), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /external_texture_plugin/example/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | -------------------------------------------------------------------------------- /external_texture_plugin/example/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /external_texture_plugin/example/android/app/src/main/kotlin/com/julyyu/externaltextureplugin_example/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.julyyu.externaltextureplugin_example 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /external_texture_plugin/example/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /external_texture_plugin/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/external_texture_plugin/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /external_texture_plugin/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/external_texture_plugin/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /external_texture_plugin/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/external_texture_plugin/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /external_texture_plugin/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/external_texture_plugin/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /external_texture_plugin/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/external_texture_plugin/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /external_texture_plugin/example/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /external_texture_plugin/example/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /external_texture_plugin/example/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.3.50' 3 | repositories { 4 | google() 5 | jcenter() 6 | } 7 | 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:3.5.0' 10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 11 | } 12 | } 13 | 14 | allprojects { 15 | repositories { 16 | google() 17 | jcenter() 18 | } 19 | } 20 | 21 | rootProject.buildDir = '../build' 22 | subprojects { 23 | project.buildDir = "${rootProject.buildDir}/${project.name}" 24 | } 25 | subprojects { 26 | project.evaluationDependsOn(':app') 27 | } 28 | 29 | task clean(type: Delete) { 30 | delete rootProject.buildDir 31 | } 32 | -------------------------------------------------------------------------------- /external_texture_plugin/example/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.enableR8=true 3 | android.useAndroidX=true 4 | android.enableJetifier=true 5 | -------------------------------------------------------------------------------- /external_texture_plugin/example/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip 7 | -------------------------------------------------------------------------------- /external_texture_plugin/example/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() 4 | 5 | def plugins = new Properties() 6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') 7 | if (pluginsFile.exists()) { 8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } 9 | } 10 | 11 | plugins.each { name, path -> 12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() 13 | include ":$name" 14 | project(":$name").projectDir = pluginDirectory 15 | } 16 | -------------------------------------------------------------------------------- /external_texture_plugin/example/ios/.gitignore: -------------------------------------------------------------------------------- 1 | *.mode1v3 2 | *.mode2v3 3 | *.moved-aside 4 | *.pbxuser 5 | *.perspectivev3 6 | **/*sync/ 7 | .sconsign.dblite 8 | .tags* 9 | **/.vagrant/ 10 | **/DerivedData/ 11 | Icon? 12 | **/Pods/ 13 | **/.symlinks/ 14 | profile 15 | xcuserdata 16 | **/.generated/ 17 | Flutter/App.framework 18 | Flutter/Flutter.framework 19 | Flutter/Flutter.podspec 20 | Flutter/Generated.xcconfig 21 | Flutter/app.flx 22 | Flutter/app.zip 23 | Flutter/flutter_assets/ 24 | Flutter/flutter_export_environment.sh 25 | ServiceDefinitions.json 26 | Runner/GeneratedPluginRegistrant.* 27 | 28 | # Exceptions to above rules. 29 | !default.mode1v3 30 | !default.mode2v3 31 | !default.pbxuser 32 | !default.perspectivev3 33 | -------------------------------------------------------------------------------- /external_texture_plugin/example/ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 8.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /external_texture_plugin/example/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /external_texture_plugin/example/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /external_texture_plugin/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /external_texture_plugin/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /external_texture_plugin/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /external_texture_plugin/example/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /external_texture_plugin/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /external_texture_plugin/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /external_texture_plugin/example/ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @UIApplicationMain 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /external_texture_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/external_texture_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /external_texture_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/external_texture_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /external_texture_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/external_texture_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /external_texture_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/external_texture_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /external_texture_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/external_texture_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /external_texture_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/external_texture_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /external_texture_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/external_texture_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /external_texture_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/external_texture_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /external_texture_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/external_texture_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /external_texture_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/external_texture_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /external_texture_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/external_texture_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /external_texture_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/external_texture_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /external_texture_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/external_texture_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /external_texture_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/external_texture_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /external_texture_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/external_texture_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /external_texture_plugin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /external_texture_plugin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/external_texture_plugin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /external_texture_plugin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/external_texture_plugin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /external_texture_plugin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/external_texture_plugin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /external_texture_plugin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /external_texture_plugin/example/ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /external_texture_plugin/example/lib/demo/image_list_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:externaltextureplugin_example/demo/mock.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | import 'NetworkImageWithoutAuth.dart'; 5 | import 'fade_in_iamge.dart'; 6 | 7 | class ImageListDemo extends StatefulWidget { 8 | @override 9 | _FlutterImageDemoState createState() => _FlutterImageDemoState(); 10 | } 11 | 12 | class _FlutterImageDemoState extends State { 13 | @override 14 | Widget build(BuildContext context) { 15 | return Scaffold( 16 | appBar: AppBar( 17 | title: Text("Flutter Image 加载"), 18 | ), 19 | body: ListView.builder( 20 | itemBuilder: (context, index) { 21 | return FadeInImageWithoutAuth.assetNetwork( 22 | placeholder: "res/img/jay.jpg", 23 | image: imgs[index % imgs.length], 24 | fit: BoxFit.fill, 25 | ); 26 | }, 27 | itemCount: 300, 28 | ), 29 | ); 30 | } 31 | 32 | @override 33 | void dispose() { 34 | super.dispose(); 35 | PaintingBinding.instance.imageCache.clear(); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /external_texture_plugin/example/lib/demo/texture_grid_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:external_texture_plugin/external_texture_plugin.dart'; 2 | import 'package:externaltextureplugin_example/demo/texture_image_widget.dart'; 3 | import 'package:flutter/material.dart'; 4 | 5 | import 'mock.dart'; 6 | 7 | class TextureGridListDemo extends StatefulWidget { 8 | @override 9 | _TextureDemoState createState() => _TextureDemoState(); 10 | } 11 | 12 | class _TextureDemoState extends State { 13 | @override 14 | Widget build(BuildContext context) { 15 | return Scaffold( 16 | appBar: AppBar(), 17 | body: GridView.builder( 18 | gridDelegate: 19 | SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3), 20 | itemBuilder: (context, index) { 21 | return TextureImageWidget(imgs[index % imgs.length]); 22 | }, 23 | itemCount: 300, 24 | ), 25 | ); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /external_texture_plugin/example/lib/demo/texture_list_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:externaltextureplugin_example/demo/mock.dart'; 2 | import 'package:externaltextureplugin_example/demo/texture_image_widget.dart'; 3 | import 'package:flutter/material.dart'; 4 | 5 | class TextureListDemo extends StatefulWidget { 6 | @override 7 | _TextureDemoState createState() => _TextureDemoState(); 8 | } 9 | 10 | class _TextureDemoState extends State { 11 | @override 12 | Widget build(BuildContext context) { 13 | return Scaffold( 14 | appBar: AppBar(), 15 | body: ListView.builder( 16 | itemBuilder: (context, index) { 17 | return TextureImageWidget(imgs[index % imgs.length]); 18 | }, 19 | itemCount: 300, 20 | ), 21 | ); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /external_texture_plugin/example/lib/demo/texture_single_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:externaltextureplugin_example/demo/texture_image_widget.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:external_texture_plugin/external_texture_plugin.dart'; 4 | 5 | import 'mock.dart'; 6 | 7 | class TextureSingleImageDemo extends StatefulWidget { 8 | @override 9 | _TextureDemoState createState() => _TextureDemoState(); 10 | } 11 | 12 | class _TextureDemoState extends State { 13 | @override 14 | Widget build(BuildContext context) { 15 | return Scaffold( 16 | appBar: AppBar(), 17 | body: Column( 18 | children: [ 19 | TextureImageWidget(imgs[0]), 20 | ], 21 | ), 22 | ); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /external_texture_plugin/example/lib/demo/texture_single_external_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:externaltextureplugin_example/demo/texture_image_widget.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | import 'mock.dart'; 5 | 6 | class TextureSingleExternalImageDemo extends StatefulWidget { 7 | @override 8 | _TextureDemoState createState() => _TextureDemoState(); 9 | } 10 | 11 | class _TextureDemoState extends State { 12 | @override 13 | Widget build(BuildContext context) { 14 | return Scaffold( 15 | appBar: AppBar(), 16 | body: SingleChildScrollView( 17 | child: Column( 18 | children: [ 19 | TextureImageWidget(imgs[0]), 20 | ], 21 | ), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /external_texture_plugin/example/lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:externaltextureplugin_example/demo/texture_main_demo.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | void main() { 5 | runApp(MyApp()); 6 | } 7 | 8 | class MyApp extends StatefulWidget { 9 | @override 10 | _MyAppState createState() => _MyAppState(); 11 | } 12 | 13 | class _MyAppState extends State { 14 | @override 15 | Widget build(BuildContext context) { 16 | return MaterialApp( 17 | home: TextureMainDemo() 18 | ); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /external_texture_plugin/example/res/img/jay.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/external_texture_plugin/example/res/img/jay.jpg -------------------------------------------------------------------------------- /external_texture_plugin/example/test/widget_test.dart: -------------------------------------------------------------------------------- 1 | // This is a basic Flutter widget test. 2 | // 3 | // To perform an interaction with a widget in your test, use the WidgetTester 4 | // utility that Flutter provides. For example, you can send tap and scroll 5 | // gestures. You can also use WidgetTester to find child widgets in the widget 6 | // tree, read text, and verify that the values of widget properties are correct. 7 | 8 | import 'package:flutter/material.dart'; 9 | import 'package:flutter_test/flutter_test.dart'; 10 | 11 | import '../lib/shop_page_demo.dart'; 12 | 13 | 14 | void main() { 15 | testWidgets('Verify Platform version', (WidgetTester tester) async { 16 | // Build our app and trigger a frame. 17 | await tester.pumpWidget(MyApp()); 18 | 19 | // Verify that platform version is retrieved. 20 | expect( 21 | find.byWidgetPredicate( 22 | (Widget widget) => widget is Text && 23 | widget.data.startsWith('Running on:'), 24 | ), 25 | findsOneWidget, 26 | ); 27 | }); 28 | } 29 | -------------------------------------------------------------------------------- /external_texture_plugin/ios/.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | .vagrant/ 3 | .sconsign.dblite 4 | .svn/ 5 | 6 | .DS_Store 7 | *.swp 8 | profile 9 | 10 | DerivedData/ 11 | build/ 12 | GeneratedPluginRegistrant.h 13 | GeneratedPluginRegistrant.m 14 | 15 | .generated/ 16 | 17 | *.pbxuser 18 | *.mode1v3 19 | *.mode2v3 20 | *.perspectivev3 21 | 22 | !default.pbxuser 23 | !default.mode1v3 24 | !default.mode2v3 25 | !default.perspectivev3 26 | 27 | xcuserdata 28 | 29 | *.moved-aside 30 | 31 | *.pyc 32 | *sync/ 33 | Icon? 34 | .tags* 35 | 36 | /Flutter/Generated.xcconfig 37 | /Flutter/flutter_export_environment.sh -------------------------------------------------------------------------------- /external_texture_plugin/ios/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/external_texture_plugin/ios/Assets/.gitkeep -------------------------------------------------------------------------------- /external_texture_plugin/ios/Classes/ExternaltexturepluginPlugin.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface ExternaltexturepluginPlugin : NSObject 4 | @end 5 | -------------------------------------------------------------------------------- /external_texture_plugin/ios/Classes/ExternaltexturepluginPlugin.m: -------------------------------------------------------------------------------- 1 | #import "ExternaltexturepluginPlugin.h" 2 | #if __has_include() 3 | #import 4 | #else 5 | // Support project import fallback if the generated compatibility header 6 | // is not copied when this plugin is created as a library. 7 | // https://forums.swift.org/t/swift-static-libraries-dont-copy-generated-objective-c-header/19816 8 | #import "externaltextureplugin-Swift.h" 9 | #endif 10 | 11 | @implementation ExternaltexturepluginPlugin 12 | + (void)registerWithRegistrar:(NSObject*)registrar { 13 | [SwiftExternaltexturepluginPlugin registerWithRegistrar:registrar]; 14 | } 15 | @end 16 | -------------------------------------------------------------------------------- /external_texture_plugin/ios/Classes/SwiftExternaltexturepluginPlugin.swift: -------------------------------------------------------------------------------- 1 | import Flutter 2 | import UIKit 3 | 4 | public class SwiftExternaltexturepluginPlugin: NSObject, FlutterPlugin { 5 | public static func register(with registrar: FlutterPluginRegistrar) { 6 | let channel = FlutterMethodChannel(name: "externaltextureplugin", binaryMessenger: registrar.messenger()) 7 | let instance = SwiftExternaltexturepluginPlugin() 8 | registrar.addMethodCallDelegate(instance, channel: channel) 9 | } 10 | 11 | public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) { 12 | result("iOS " + UIDevice.current.systemVersion) 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /external_texture_plugin/ios/externaltextureplugin.podspec: -------------------------------------------------------------------------------- 1 | # 2 | # To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html. 3 | # Run `pod lib lint externaltextureplugin.podspec' to validate before publishing. 4 | # 5 | Pod::Spec.new do |s| 6 | s.name = 'externaltextureplugin' 7 | s.version = '0.0.1' 8 | s.summary = 'A new Flutter plugin.' 9 | s.description = <<-DESC 10 | A new Flutter plugin. 11 | DESC 12 | s.homepage = 'http://example.com' 13 | s.license = { :file => '../LICENSE' } 14 | s.author = { 'Your Company' => 'email@example.com' } 15 | s.source = { :path => '.' } 16 | s.source_files = 'Classes/**/*' 17 | s.dependency 'Flutter' 18 | s.platform = :ios, '8.0' 19 | 20 | # Flutter.framework does not contain a i386 slice. Only x86_64 simulators are supported. 21 | s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'VALID_ARCHS[sdk=iphonesimulator*]' => 'x86_64' } 22 | s.swift_version = '5.0' 23 | end 24 | -------------------------------------------------------------------------------- /external_texture_plugin/lib/external_texture_plugin.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | 3 | import 'package:flutter/services.dart'; 4 | 5 | class ExternalTexturePlugin { 6 | static const MethodChannel _channel = 7 | const MethodChannel('external_textrure_plugin'); 8 | 9 | static Future loadImg(String url, {int id}) async { 10 | final args = {"url": url, "id": id}; 11 | return await _channel.invokeMethod("loadUrl", args); 12 | } 13 | 14 | static Future release(String url) async { 15 | final args = {"url": url}; 16 | return await _channel.invokeMethod("release", args); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /external_texture_plugin/test/externaltextureplugin_test.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/services.dart'; 2 | import 'package:flutter_test/flutter_test.dart'; 3 | 4 | void main() { 5 | const MethodChannel channel = MethodChannel('externaltextureplugin'); 6 | 7 | TestWidgetsFlutterBinding.ensureInitialized(); 8 | 9 | setUp(() { 10 | channel.setMockMethodCallHandler((MethodCall methodCall) async { 11 | return '42'; 12 | }); 13 | }); 14 | 15 | tearDown(() { 16 | channel.setMockMethodCallHandler(null); 17 | }); 18 | 19 | // test('getPlatformVersion', () async { 20 | // expect(await Externaltextureplugin.platformVersion, '42'); 21 | // }); 22 | } 23 | -------------------------------------------------------------------------------- /flutter_annotation/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: 511c82263a70a9b2b280ecd802ff670c8ac8f3c6 8 | channel: unknown 9 | 10 | project_type: package 11 | -------------------------------------------------------------------------------- /flutter_annotation/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## [0.0.1] - TODO: Add release date. 2 | 3 | * TODO: Describe initial release. 4 | -------------------------------------------------------------------------------- /flutter_annotation/LICENSE: -------------------------------------------------------------------------------- 1 | TODO: Add your license here. 2 | -------------------------------------------------------------------------------- /flutter_annotation/README.md: -------------------------------------------------------------------------------- 1 | # flutterannotation 2 | 3 | A new Flutter package. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Dart 8 | [package](https://flutter.dev/developing-packages/), 9 | a library module containing code that can be shared easily across 10 | multiple Flutter or Dart projects. 11 | 12 | For help getting started with Flutter, view our 13 | [online documentation](https://flutter.dev/docs), which offers tutorials, 14 | samples, guidance on mobile development, and a full API reference. 15 | -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | 12 | # IntelliJ related 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | 18 | # The .vscode folder contains launch configuration and tasks you configure in 19 | # VS Code which you may wish to be included in version control, so this line 20 | # is commented out by default. 21 | #.vscode/ 22 | 23 | # Flutter/Dart/Pub related 24 | **/doc/api/ 25 | **/ios/Flutter/.last_build_id 26 | .dart_tool/ 27 | .flutter-plugins 28 | .flutter-plugins-dependencies 29 | .packages 30 | .pub-cache/ 31 | .pub/ 32 | /build/ 33 | 34 | # Web related 35 | lib/generated_plugin_registrant.dart 36 | 37 | # Symbolication related 38 | app.*.symbols 39 | 40 | # Obfuscation related 41 | app.*.map.json 42 | 43 | # Android Studio will place build artifacts here 44 | /android/app/debug 45 | /android/app/profile 46 | /android/app/release 47 | -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: 2c793bb700fca120c2bd583b0a9fca6ecb358dae 8 | channel: master 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/README.md: -------------------------------------------------------------------------------- 1 | # annotation_sample 2 | 3 | A new Flutter project. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) 13 | 14 | For help getting started with Flutter, view our 15 | [online documentation](https://flutter.dev/docs), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/android/app/src/main/kotlin/com/example/annotation_sample/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.annotation_sample 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_annotation/annotation_sample/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_annotation/annotation_sample/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_annotation/annotation_sample/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_annotation/annotation_sample/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_annotation/annotation_sample/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/android/app/src/main/res/values-night/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.3.50' 3 | repositories { 4 | google() 5 | jcenter() 6 | } 7 | 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:3.5.0' 10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 11 | } 12 | } 13 | 14 | allprojects { 15 | repositories { 16 | google() 17 | jcenter() 18 | } 19 | } 20 | 21 | rootProject.buildDir = '../build' 22 | subprojects { 23 | project.buildDir = "${rootProject.buildDir}/${project.name}" 24 | } 25 | subprojects { 26 | project.evaluationDependsOn(':app') 27 | } 28 | 29 | task clean(type: Delete) { 30 | delete rootProject.buildDir 31 | } 32 | -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip 7 | -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties") 4 | def properties = new Properties() 5 | 6 | assert localPropertiesFile.exists() 7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } 8 | 9 | def flutterSdkPath = properties.getProperty("flutter.sdk") 10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties" 11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" 12 | -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/ios/.gitignore: -------------------------------------------------------------------------------- 1 | *.mode1v3 2 | *.mode2v3 3 | *.moved-aside 4 | *.pbxuser 5 | *.perspectivev3 6 | **/*sync/ 7 | .sconsign.dblite 8 | .tags* 9 | **/.vagrant/ 10 | **/DerivedData/ 11 | Icon? 12 | **/Pods/ 13 | **/.symlinks/ 14 | profile 15 | xcuserdata 16 | **/.generated/ 17 | Flutter/App.framework 18 | Flutter/Flutter.framework 19 | Flutter/Flutter.podspec 20 | Flutter/Generated.xcconfig 21 | Flutter/app.flx 22 | Flutter/app.zip 23 | Flutter/flutter_assets/ 24 | Flutter/flutter_export_environment.sh 25 | ServiceDefinitions.json 26 | Runner/GeneratedPluginRegistrant.* 27 | 28 | # Exceptions to above rules. 29 | !default.mode1v3 30 | !default.mode2v3 31 | !default.pbxuser 32 | !default.perspectivev3 33 | -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 8.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @UIApplicationMain 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/lib/mark_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutterannotation/mark.dart'; 2 | 3 | 4 | 5 | 6 | 7 | @Mark(name: "hello") 8 | class MarkDemo { 9 | 10 | } -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/lib/mark_demo.mark.dart: -------------------------------------------------------------------------------- 1 | // GENERATED CODE - DO NOT MODIFY BY HAND 2 | 3 | // ************************************************************************** 4 | // MarkGenerator 5 | // ************************************************************************** 6 | 7 | class MarkDemoMark { 8 | String hello; 9 | } 10 | -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/lib/widget_demo.dart: -------------------------------------------------------------------------------- 1 | import 'dart:html'; 2 | 3 | import 'package:flutter/material.dart'; 4 | import 'package:flutterannotation/mark.dart'; 5 | 6 | 7 | 8 | @WidgetMark() 9 | class StatefulWidgetDemo extends StatefulWidget { 10 | @override 11 | _StatefulWidgetDemoState createState() => _StatefulWidgetDemoState(); 12 | } 13 | 14 | class _StatefulWidgetDemoState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return Container( 18 | child: Column( 19 | children: [ 20 | Text("lll"), 21 | Text("kkkk"), 22 | Text("jojoj"), 23 | ], 24 | ), 25 | ); 26 | } 27 | } 28 | 29 | 30 | @WidgetMark() 31 | class StatelessWidgetDemo extends StatelessWidget { 32 | @override 33 | Widget build(BuildContext context) { 34 | return Container( 35 | child: Column( 36 | children: [ 37 | Text("StatelessWidgetDemo lll"), 38 | Text("StatelessWidgetDemo kkkk"), 39 | Text("StatelessWidgetDemo jojoj"), 40 | ], 41 | ), 42 | ); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /flutter_annotation/annotation_sample/lib/widget_demo.widget.dart: -------------------------------------------------------------------------------- 1 | // GENERATED CODE - DO NOT MODIFY BY HAND 2 | 3 | // ************************************************************************** 4 | // WidgetMarkGenerator 5 | // ************************************************************************** 6 | 7 | ///class StatefulWidgetDemo extends StatefulWidget* 8 | class StatefulWidgetDemoMark {} 9 | 10 | ///class StatelessWidgetDemo extends StatelessWidget* 11 | class StatelessWidgetDemoMark {} 12 | -------------------------------------------------------------------------------- /flutter_annotation/build.yaml: -------------------------------------------------------------------------------- 1 | targets: 2 | $default: 3 | builders: 4 | flutterannotation|mark_builder: 5 | enabled: true 6 | builders: 7 | mark_builder: 8 | import: 'package:flutterannotation/builder.dart' 9 | builder_factories: ['markBuilder','markWidgetBuilder'] 10 | build_extensions: { '.dart': ['.mark.dart','.widget.dart'] } 11 | auto_apply: root_package 12 | build_to: source -------------------------------------------------------------------------------- /flutter_annotation/lib/builder.dart: -------------------------------------------------------------------------------- 1 | import 'package:source_gen/source_gen.dart'; 2 | import 'package:build/build.dart'; 3 | 4 | 5 | import 'generator.dart'; 6 | 7 | Builder markBuilder(BuilderOptions options) => LibraryBuilder(MarkGenerator(), 8 | generatedExtension: '.mark.dart'); 9 | 10 | 11 | 12 | 13 | Builder markWidgetBuilder(BuilderOptions options) => LibraryBuilder(WidgetMarkGenerator(), 14 | generatedExtension: '.widget.dart'); -------------------------------------------------------------------------------- /flutter_annotation/lib/mark.dart: -------------------------------------------------------------------------------- 1 | class Mark { 2 | final String name; 3 | const Mark({this.name}); 4 | } 5 | 6 | 7 | class WidgetMark{ 8 | 9 | 10 | const WidgetMark(); 11 | } 12 | 13 | 14 | /// https://github.com/dangercheng/FlutterDemos/tree/master/code_gen_demo 15 | /// 16 | /// 17 | /// https://segmentfault.com/a/1190000018501092 18 | /// 19 | 20 | 21 | 22 | /// flutter packages pub run build_runner build --delete-conflicting-outputs 23 | /// 24 | /// 25 | /// 26 | /// flutter packages pub run build_runner clean 27 | /// 28 | /// 29 | // -------------------------------------------------------------------------------- /flutter_app_plugin/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .dart_tool/ 3 | 4 | .packages 5 | .pub/ 6 | 7 | build/ 8 | -------------------------------------------------------------------------------- /flutter_app_plugin/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: 760635e6dbf9180222171ac189199982a65cf608 8 | channel: master 9 | 10 | project_type: plugin 11 | -------------------------------------------------------------------------------- /flutter_app_plugin/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.0.1 2 | 3 | * TODO: Describe initial release. 4 | -------------------------------------------------------------------------------- /flutter_app_plugin/LICENSE: -------------------------------------------------------------------------------- 1 | TODO: Add your license here. 2 | -------------------------------------------------------------------------------- /flutter_app_plugin/README.md: -------------------------------------------------------------------------------- 1 | # flutter_app_plugin 2 | 3 | Flutter temple plugin. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter 8 | [plug-in package](https://flutter.dev/developing-packages/), 9 | a specialized package that includes platform-specific implementation code for 10 | Android and/or iOS. 11 | 12 | For help getting started with Flutter, view our 13 | [online documentation](https://flutter.dev/docs), which offers tutorials, 14 | samples, guidance on mobile development, and a full API reference. 15 | -------------------------------------------------------------------------------- /flutter_app_plugin/android/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | -------------------------------------------------------------------------------- /flutter_app_plugin/android/build.gradle: -------------------------------------------------------------------------------- 1 | group 'com.hjapp.flutter_app_plugin' 2 | version '1.0' 3 | 4 | buildscript { 5 | repositories { 6 | google() 7 | jcenter() 8 | } 9 | 10 | dependencies { 11 | classpath 'com.android.tools.build:gradle:3.2.1' 12 | } 13 | } 14 | 15 | rootProject.allprojects { 16 | repositories { 17 | google() 18 | jcenter() 19 | } 20 | } 21 | 22 | apply plugin: 'com.android.library' 23 | 24 | android { 25 | compileSdkVersion 28 26 | 27 | defaultConfig { 28 | minSdkVersion 16 29 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 30 | } 31 | lintOptions { 32 | disable 'InvalidPackage' 33 | } 34 | 35 | 36 | } 37 | 38 | dependencies { 39 | // implementation 'com.android.support:support-v4:28.0.0' 40 | // implementation 'com.android.support:appcompat-v7:28.0.0' 41 | implementation 'androidx.appcompat:appcompat:1.0.0' 42 | 43 | } 44 | -------------------------------------------------------------------------------- /flutter_app_plugin/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | 3 | android.enableR8=true 4 | -------------------------------------------------------------------------------- /flutter_app_plugin/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip 6 | -------------------------------------------------------------------------------- /flutter_app_plugin/android/res/values/strings_en.arb: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /flutter_app_plugin/android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'flutter_app_plugin' 2 | -------------------------------------------------------------------------------- /flutter_app_plugin/android/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 9 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /flutter_app_plugin/android/src/main/res/drawable/jay.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_app_plugin/android/src/main/res/drawable/jay.jpg -------------------------------------------------------------------------------- /flutter_app_plugin/android/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFFFFF 4 | -------------------------------------------------------------------------------- /flutter_app_plugin/android/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /flutter_app_plugin/example/.flutter-plugins-dependencies: -------------------------------------------------------------------------------- 1 | {"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"flutter_app_plugin","path":"/Users/julyyu1/FlutterProject/Flutter_Demo/flutter_app_plugin/","dependencies":[]}],"android":[{"name":"flutter_app_plugin","path":"/Users/julyyu1/FlutterProject/Flutter_Demo/flutter_app_plugin/","dependencies":[]}],"macos":[],"linux":[],"windows":[],"web":[]},"dependencyGraph":[{"name":"flutter_app_plugin","dependencies":[]}],"date_created":"2020-05-28 19:10:36.618996","version":"1.17.0"} -------------------------------------------------------------------------------- /flutter_app_plugin/example/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: 760635e6dbf9180222171ac189199982a65cf608 8 | channel: master 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /flutter_app_plugin/example/README.md: -------------------------------------------------------------------------------- 1 | # flutter_app_plugin_example 2 | 3 | Demonstrates how to use the flutter_app_plugin plugin. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) 13 | 14 | For help getting started with Flutter, view our 15 | [online documentation](https://flutter.dev/docs), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /flutter_app_plugin/example/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /flutter_app_plugin/example/android/app/src/main/java/com/hjapp/flutter_app_plugin_example/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.hjapp.flutter_app_plugin_example; 2 | 3 | import android.os.Bundle; 4 | import io.flutter.app.FlutterActivity; 5 | import io.flutter.plugins.GeneratedPluginRegistrant; 6 | 7 | public class MainActivity extends FlutterActivity { 8 | @Override 9 | protected void onCreate(Bundle savedInstanceState) { 10 | super.onCreate(savedInstanceState); 11 | GeneratedPluginRegistrant.registerWith(this); 12 | 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /flutter_app_plugin/example/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /flutter_app_plugin/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_app_plugin/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /flutter_app_plugin/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_app_plugin/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /flutter_app_plugin/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_app_plugin/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /flutter_app_plugin/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_app_plugin/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /flutter_app_plugin/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_app_plugin/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /flutter_app_plugin/example/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /flutter_app_plugin/example/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /flutter_app_plugin/example/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | google() 4 | jcenter() 5 | } 6 | 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:3.2.1' 9 | } 10 | } 11 | 12 | allprojects { 13 | repositories { 14 | google() 15 | jcenter() 16 | } 17 | } 18 | 19 | rootProject.buildDir = '../build' 20 | subprojects { 21 | project.buildDir = "${rootProject.buildDir}/${project.name}" 22 | } 23 | subprojects { 24 | project.evaluationDependsOn(':app') 25 | } 26 | 27 | task clean(type: Delete) { 28 | delete rootProject.buildDir 29 | } 30 | -------------------------------------------------------------------------------- /flutter_app_plugin/example/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | 3 | -------------------------------------------------------------------------------- /flutter_app_plugin/example/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip 7 | -------------------------------------------------------------------------------- /flutter_app_plugin/example/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() 4 | 5 | def plugins = new Properties() 6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') 7 | if (pluginsFile.exists()) { 8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } 9 | } 10 | 11 | plugins.each { name, path -> 12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() 13 | include ":$name" 14 | project(":$name").projectDir = pluginDirectory 15 | } 16 | -------------------------------------------------------------------------------- /flutter_app_plugin/example/ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 8.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /flutter_app_plugin/example/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /flutter_app_plugin/example/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /flutter_app_plugin/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /flutter_app_plugin/example/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /flutter_app_plugin/example/ios/Runner/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : FlutterAppDelegate 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /flutter_app_plugin/example/ios/Runner/AppDelegate.m: -------------------------------------------------------------------------------- 1 | #include "AppDelegate.h" 2 | #include "GeneratedPluginRegistrant.h" 3 | 4 | @implementation AppDelegate 5 | 6 | - (BOOL)application:(UIApplication *)application 7 | didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 8 | [GeneratedPluginRegistrant registerWithRegistry:self]; 9 | // Override point for customization after application launch. 10 | return [super application:application didFinishLaunchingWithOptions:launchOptions]; 11 | } 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /flutter_app_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_app_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /flutter_app_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_app_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /flutter_app_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_app_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /flutter_app_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_app_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /flutter_app_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_app_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /flutter_app_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_app_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /flutter_app_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_app_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /flutter_app_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_app_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /flutter_app_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_app_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /flutter_app_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_app_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /flutter_app_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_app_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /flutter_app_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_app_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /flutter_app_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_app_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /flutter_app_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_app_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /flutter_app_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_app_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /flutter_app_plugin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /flutter_app_plugin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_app_plugin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /flutter_app_plugin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_app_plugin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /flutter_app_plugin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_app_plugin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /flutter_app_plugin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /flutter_app_plugin/example/ios/Runner/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char* argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /flutter_app_plugin/ios/.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | .vagrant/ 3 | .sconsign.dblite 4 | .svn/ 5 | 6 | .DS_Store 7 | *.swp 8 | profile 9 | 10 | DerivedData/ 11 | build/ 12 | GeneratedPluginRegistrant.h 13 | GeneratedPluginRegistrant.m 14 | 15 | .generated/ 16 | 17 | *.pbxuser 18 | *.mode1v3 19 | *.mode2v3 20 | *.perspectivev3 21 | 22 | !default.pbxuser 23 | !default.mode1v3 24 | !default.mode2v3 25 | !default.perspectivev3 26 | 27 | xcuserdata 28 | 29 | *.moved-aside 30 | 31 | *.pyc 32 | *sync/ 33 | Icon? 34 | .tags* 35 | 36 | /Flutter/Generated.xcconfig 37 | /Flutter/flutter_export_environment.sh -------------------------------------------------------------------------------- /flutter_app_plugin/ios/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/flutter_app_plugin/ios/Assets/.gitkeep -------------------------------------------------------------------------------- /flutter_app_plugin/ios/Classes/FlutterAppPlugin.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface FlutterAppPlugin : NSObject 4 | @end 5 | -------------------------------------------------------------------------------- /flutter_app_plugin/ios/Classes/FlutterAppPlugin.m: -------------------------------------------------------------------------------- 1 | #import "FlutterAppPlugin.h" 2 | 3 | @implementation FlutterAppPlugin 4 | + (void)registerWithRegistrar:(NSObject*)registrar { 5 | FlutterMethodChannel* channel = [FlutterMethodChannel 6 | methodChannelWithName:@"flutter_app_plugin" 7 | binaryMessenger:[registrar messenger]]; 8 | FlutterAppPlugin* instance = [[FlutterAppPlugin alloc] init]; 9 | [registrar addMethodCallDelegate:instance channel:channel]; 10 | } 11 | 12 | - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result { 13 | if ([@"getPlatformVersion" isEqualToString:call.method]) { 14 | result([@"iOS " stringByAppendingString:[[UIDevice currentDevice] systemVersion]]); 15 | } else { 16 | result(FlutterMethodNotImplemented); 17 | } 18 | } 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /flutter_app_plugin/ios/flutter_app_plugin.podspec: -------------------------------------------------------------------------------- 1 | # 2 | # To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html 3 | # 4 | Pod::Spec.new do |s| 5 | s.name = 'flutter_app_plugin' 6 | s.version = '0.0.1' 7 | s.summary = 'Flutter temple plugin.' 8 | s.description = <<-DESC 9 | Flutter temple plugin. 10 | DESC 11 | s.homepage = 'http://example.com' 12 | s.license = { :file => '../LICENSE' } 13 | s.author = { 'Your Company' => 'email@example.com' } 14 | s.source = { :path => '.' } 15 | s.source_files = 'Classes/**/*' 16 | s.public_header_files = 'Classes/**/*.h' 17 | s.dependency 'Flutter' 18 | 19 | s.ios.deployment_target = '8.0' 20 | end 21 | 22 | -------------------------------------------------------------------------------- /flutter_app_plugin/res/values/strings_en.arb: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /flutter_app_plugin/test/flutter_app_plugin_test.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/services.dart'; 2 | import 'package:flutter_test/flutter_test.dart'; 3 | import 'package:flutter_app_plugin/flutter_app_plugin.dart'; 4 | 5 | void main() { 6 | const MethodChannel channel = MethodChannel('flutter_app_plugin'); 7 | 8 | setUp(() { 9 | channel.setMockMethodCallHandler((MethodCall methodCall) async { 10 | return '42'; 11 | }); 12 | }); 13 | 14 | tearDown(() { 15 | channel.setMockMethodCallHandler(null); 16 | }); 17 | 18 | test('getPlatformVersion', () async { 19 | expect(await FlutterAppPlugin.platformVersion, '42'); 20 | }); 21 | } 22 | -------------------------------------------------------------------------------- /flutter_dev_package/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: e6b34c2b5c96bb95325269a29a84e83ed8909b5f 8 | channel: unknown 9 | 10 | project_type: package 11 | -------------------------------------------------------------------------------- /flutter_dev_package/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## [0.0.1] - TODO: Add release date. 2 | 3 | * TODO: Describe initial release. 4 | -------------------------------------------------------------------------------- /flutter_dev_package/LICENSE: -------------------------------------------------------------------------------- 1 | TODO: Add your license here. 2 | -------------------------------------------------------------------------------- /flutter_dev_package/README.md: -------------------------------------------------------------------------------- 1 | # flutterdevpackage 2 | 3 | A new Flutter package. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Dart 8 | [package](https://flutter.dev/developing-packages/), 9 | a library module containing code that can be shared easily across 10 | multiple Flutter or Dart projects. 11 | 12 | For help getting started with Flutter, view our 13 | [online documentation](https://flutter.dev/docs), which offers tutorials, 14 | samples, guidance on mobile development, and a full API reference. 15 | -------------------------------------------------------------------------------- /flutter_dev_package/lib/TestWidget.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | 4 | class TextWidget extends StatelessWidget { 5 | @override 6 | Widget build(BuildContext context) { 7 | return Text("This is Dev Widget"); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /flutter_dev_package/lib/debug_widget.dart: -------------------------------------------------------------------------------- 1 | export 'package:flutterdebugpackage/TestWidget.dart'; -------------------------------------------------------------------------------- /flutter_dev_package/lib/flutterdevpackage.dart: -------------------------------------------------------------------------------- 1 | library flutterdebugpackage; 2 | 3 | /// A Calculator. 4 | class Calculator { 5 | /// Returns [value] plus 1. 6 | int addOne(int value) => value + 1; 7 | } 8 | -------------------------------------------------------------------------------- /flutter_dev_package/test/flutterdevpackage_test.dart: -------------------------------------------------------------------------------- 1 | //import 'package:flutter_test/flutter_test.dart'; 2 | // 3 | //import 'package:flutterdevpackage/flutterdevpackage.dart'; 4 | // 5 | //void main() { 6 | // test('adds one to input values', () { 7 | // final calculator = Calculator(); 8 | // expect(calculator.addOne(2), 3); 9 | // expect(calculator.addOne(-7), -6); 10 | // expect(calculator.addOne(0), 1); 11 | // expect(() => calculator.addOne(null), throwsNoSuchMethodError); 12 | // }); 13 | //} 14 | -------------------------------------------------------------------------------- /flutter_release_package/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: e6b34c2b5c96bb95325269a29a84e83ed8909b5f 8 | channel: unknown 9 | 10 | project_type: package 11 | -------------------------------------------------------------------------------- /flutter_release_package/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## [0.0.1] - TODO: Add release date. 2 | 3 | * TODO: Describe initial release. 4 | -------------------------------------------------------------------------------- /flutter_release_package/LICENSE: -------------------------------------------------------------------------------- 1 | TODO: Add your license here. 2 | -------------------------------------------------------------------------------- /flutter_release_package/README.md: -------------------------------------------------------------------------------- 1 | # flutterreleasepackage 2 | 3 | A new Flutter package. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Dart 8 | [package](https://flutter.dev/developing-packages/), 9 | a library module containing code that can be shared easily across 10 | multiple Flutter or Dart projects. 11 | 12 | For help getting started with Flutter, view our 13 | [online documentation](https://flutter.dev/docs), which offers tutorials, 14 | samples, guidance on mobile development, and a full API reference. 15 | -------------------------------------------------------------------------------- /flutter_release_package/lib/TestWidget.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | 4 | class TextWidget extends StatelessWidget { 5 | @override 6 | Widget build(BuildContext context) { 7 | return Text("This is Release Widget"); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /flutter_release_package/lib/TestWidget2.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | 4 | class TextWidget extends StatelessWidget { 5 | @override 6 | Widget build(BuildContext context) { 7 | return Text("This is Dev Widget"); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /flutter_release_package/lib/debug_widget.dart: -------------------------------------------------------------------------------- 1 | export 'package:flutterreleasepackage/TestWidget.dart'; -------------------------------------------------------------------------------- /flutter_release_package/lib/flutterreleasepackage.dart: -------------------------------------------------------------------------------- 1 | library flutterreleasepackage; 2 | 3 | /// A Calculator. 4 | class Calculator { 5 | /// Returns [value] plus 1. 6 | int addOne(int value) => value + 1; 7 | } 8 | -------------------------------------------------------------------------------- /flutter_release_package/test/flutterreleasepackage_test.dart: -------------------------------------------------------------------------------- 1 | //import 'package:flutter_test/flutter_test.dart'; 2 | // 3 | //import 'package:flutterreleasepackage/flutterreleasepackage.dart'; 4 | // 5 | //void main() { 6 | // test('adds one to input values', () { 7 | // final calculator = Calculator(); 8 | // expect(calculator.addOne(2), 3); 9 | // expect(calculator.addOne(-7), -6); 10 | // expect(calculator.addOne(0), 1); 11 | // expect(() => calculator.addOne(null), throwsNoSuchMethodError); 12 | // }); 13 | //} 14 | -------------------------------------------------------------------------------- /flutter_template/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: 760635e6dbf9180222171ac189199982a65cf608 8 | channel: master 9 | 10 | project_type: package 11 | -------------------------------------------------------------------------------- /flutter_template/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## [0.0.1] - TODO: Add release date. 2 | 3 | * TODO: Describe initial release. 4 | -------------------------------------------------------------------------------- /flutter_template/LICENSE: -------------------------------------------------------------------------------- 1 | TODO: Add your license here. 2 | -------------------------------------------------------------------------------- /flutter_template/README.md: -------------------------------------------------------------------------------- 1 | # flutter_template 2 | 3 | A new Flutter package. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Dart 8 | [package](https://flutter.dev/developing-packages/), 9 | a library module containing code that can be shared easily across 10 | multiple Flutter or Dart projects. 11 | 12 | For help getting started with Flutter, view our 13 | [online documentation](https://flutter.dev/docs), which offers tutorials, 14 | samples, guidance on mobile development, and a full API reference. 15 | -------------------------------------------------------------------------------- /flutter_template/lib/flutter_temple.dart: -------------------------------------------------------------------------------- 1 | ///所有依赖类在此声明,否则无法引用 2 | 3 | /// utils 4 | export 'src/utils/h_dialog_util.dart'; 5 | /// net 6 | export 'src/net/h_net_client.dart'; 7 | ///widgets 8 | export 'src/widgets/h_bottom_nav_page.dart'; -------------------------------------------------------------------------------- /flutter_template/lib/src/utils/h_date_util.dart: -------------------------------------------------------------------------------- 1 | 2 | class HDateUtil{ 3 | 4 | 5 | static DateTime getTime(int time){ 6 | return DateTime.fromMillisecondsSinceEpoch(time); 7 | } 8 | } -------------------------------------------------------------------------------- /flutter_template/lib/src/widgets/j_container.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/widgets.dart'; 2 | 3 | class JContainer extends StatelessWidget { 4 | @override 5 | Widget build(BuildContext context) { 6 | return Container(); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /images/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/images/1.png -------------------------------------------------------------------------------- /images/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/images/2.png -------------------------------------------------------------------------------- /images/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/images/3.png -------------------------------------------------------------------------------- /images/bg0.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/images/bg0.jpeg -------------------------------------------------------------------------------- /images/bg1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/images/bg1.jpeg -------------------------------------------------------------------------------- /images/bg2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/images/bg2.jpeg -------------------------------------------------------------------------------- /images/bg3.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/images/bg3.jpeg -------------------------------------------------------------------------------- /images/bigimage.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/images/bigimage.jpeg -------------------------------------------------------------------------------- /images/bigimage.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/images/bigimage.webp -------------------------------------------------------------------------------- /images/gif_player_demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/images/gif_player_demo.gif -------------------------------------------------------------------------------- /images/gif_player_one.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/images/gif_player_one.gif -------------------------------------------------------------------------------- /images/ic_love_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/images/ic_love_gif.gif -------------------------------------------------------------------------------- /images/ic_love_gif.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/images/ic_love_gif.webp -------------------------------------------------------------------------------- /images/icon_left_sliver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/images/icon_left_sliver.png -------------------------------------------------------------------------------- /images/p1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/images/p1.jpeg -------------------------------------------------------------------------------- /images/p2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/images/p2.jpeg -------------------------------------------------------------------------------- /images/p3.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/images/p3.jpeg -------------------------------------------------------------------------------- /images/p4.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/images/p4.jpeg -------------------------------------------------------------------------------- /images/p5.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/images/p5.jpeg -------------------------------------------------------------------------------- /images/res/wa1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/images/res/wa1.png -------------------------------------------------------------------------------- /images/res/wa2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/images/res/wa2.png -------------------------------------------------------------------------------- /images/res/wa3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/images/res/wa3.png -------------------------------------------------------------------------------- /images/res/wa4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/images/res/wa4.png -------------------------------------------------------------------------------- /images/res/wa5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/images/res/wa5.png -------------------------------------------------------------------------------- /images/res/wa6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/images/res/wa6.png -------------------------------------------------------------------------------- /images/res/wa7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/images/res/wa7.png -------------------------------------------------------------------------------- /ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 8.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : FlutterAppDelegate 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.m: -------------------------------------------------------------------------------- 1 | #include "AppDelegate.h" 2 | #include "GeneratedPluginRegistrant.h" 3 | 4 | @implementation AppDelegate 5 | 6 | - (BOOL)application:(UIApplication *)application 7 | didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 8 | [GeneratedPluginRegistrant registerWithRegistry:self]; 9 | // Override point for customization after application launch. 10 | return [super application:application didFinishLaunchingWithOptions:launchOptions]; 11 | } 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /ios/Runner/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char* argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lib/demo/appbar/sliver_appbar_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class SliverAppBarDemo extends StatefulWidget { 4 | @override 5 | _SliverAppBarDemoState createState() => _SliverAppBarDemoState(); 6 | } 7 | 8 | class _SliverAppBarDemoState extends State { 9 | @override 10 | Widget build(BuildContext context) { 11 | return Scaffold(body: Container()); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lib/demo/dart/zone_demo.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | 3 | import 'package:flutter/material.dart'; 4 | 5 | class ZoneDemo extends StatefulWidget { 6 | @override 7 | _ZoneDemoState createState() => _ZoneDemoState(); 8 | } 9 | 10 | class _ZoneDemoState extends State { 11 | 12 | @override 13 | void initState() { 14 | super.initState(); 15 | _load(); 16 | } 17 | 18 | _load(){ 19 | Zone.root.run((){ 20 | print("Zone.root."); 21 | }); 22 | } 23 | 24 | @override 25 | Widget build(BuildContext context) { 26 | return Scaffold( 27 | appBar: AppBar(), 28 | body: Column( 29 | children: [ 30 | 31 | ], 32 | ), 33 | ); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /lib/demo/flip/flip_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_demo/demo/flip/flip_num_text.dart'; 3 | 4 | class FlipDemo extends StatefulWidget { 5 | @override 6 | _FlipDemoState createState() => _FlipDemoState(); 7 | } 8 | 9 | class _FlipDemoState extends State { 10 | int num = 0; 11 | 12 | @override 13 | void initState() { 14 | super.initState(); 15 | } 16 | 17 | @override 18 | Widget build(BuildContext context) { 19 | return Scaffold( 20 | appBar: AppBar(), 21 | body: Center( 22 | child: Column( 23 | children: [ 24 | FlipNumText(num, 59), 25 | RaisedButton( 26 | child: Text("ADD"), 27 | onPressed: () { 28 | setState(() { 29 | if (num < 60) { 30 | num += 1; 31 | } else { 32 | num = 0; 33 | } 34 | }); 35 | }, 36 | ) 37 | ], 38 | ), 39 | ), 40 | ); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /lib/demo/floatbox/float_stack_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_demo/demo/floatbox/app_float_box.dart'; 3 | 4 | class FloatStackDemo extends StatefulWidget { 5 | @override 6 | _FloatStackDemoState createState() => _FloatStackDemoState(); 7 | } 8 | 9 | class _FloatStackDemoState extends State { 10 | @override 11 | Widget build(BuildContext context) { 12 | return Scaffold( 13 | appBar: AppBar( 14 | title: Text("StackGestureDetector"), 15 | ), 16 | body: Stack( 17 | fit: StackFit.expand, 18 | children: [ 19 | AppFloatBox(), 20 | ], 21 | ), 22 | ); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /lib/demo/lifecycle/statelessLifecycle_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class StatelessLifecycleDemo extends StatelessWidget { 4 | 5 | 6 | final String TAG = "StatelessLifecycleDemo"; 7 | 8 | 9 | @override 10 | Widget build(BuildContext context) { 11 | return Scaffold( 12 | appBar: AppBar(), 13 | body: Container(), 14 | ); 15 | } 16 | 17 | StatelessLifecycleDemo(){ 18 | print("$TAG StatelessLifecycleDemo constructor"); 19 | } 20 | 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/magic/animation/README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## AnimationLib 4 | 5 | ## Support 6 | 支持位移、缩放、渐变、旋转组合动画 7 | 8 | ## Code 9 | 代码结构: 10 | 11 | AnimationGroup [ // 12 | AnimationPart 13 | AnimationPart 14 | .. 15 | ] 16 | AnimationPart [ 17 | time 18 | 19 | ] 20 | 21 | -------------------------------------------------------------------------------- /lib/magic/animation/super_animation.dart: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/lib/magic/animation/super_animation.dart -------------------------------------------------------------------------------- /lib/magic/animation_group/animations.dart: -------------------------------------------------------------------------------- 1 | 2 | export 'widget/animation_group_widget.dart'; 3 | export 'parameter/animation_group.dart'; 4 | export 'parameter/animation_part.dart'; 5 | export 'parameter/animation_part.dart'; 6 | export 'manager/animation_driver.dart'; -------------------------------------------------------------------------------- /lib/magic/animation_group/manager/animation_manager.dart: -------------------------------------------------------------------------------- 1 | import 'dart:math'; 2 | 3 | import 'package:vector_math/vector_math_64.dart'; 4 | 5 | import '../parameter/animation_group.dart'; 6 | 7 | class AnimationManager { 8 | List groups; 9 | Duration duration; 10 | Matrix4 matrix4 = Matrix4.identity(); 11 | 12 | AnimationManager(this.groups) { 13 | int maxDuration = 0; 14 | for (AbsAnimationGroup group in groups) { 15 | maxDuration = max(group.duration, maxDuration); 16 | } 17 | duration = Duration(milliseconds: maxDuration); 18 | } 19 | 20 | Matrix4 calculateMatrix(double millTime) { 21 | Matrix4 outPutMatrix4 = Matrix4.identity(); 22 | for (AbsAnimationGroup group in groups) { 23 | outPutMatrix4 = group.getCurrentMatrix4(outPutMatrix4, millTime); 24 | } 25 | return outPutMatrix4; 26 | } 27 | 28 | void isReverse(bool reverse) { 29 | for (AbsAnimationGroup group in groups) { 30 | group.setReverse(reverse); 31 | } 32 | } 33 | 34 | 35 | void reset() { 36 | for (AbsAnimationGroup group in groups) { 37 | group.reset(); 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /lib/magic/animation_group/parameter/animation_part.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/widgets.dart'; 2 | import 'package:vector_math/vector_math_64.dart'; 3 | 4 | class AnimationPart { 5 | int moment; 6 | Vector3 xyz; 7 | Curve curve; 8 | 9 | AnimationPart({ 10 | @required this.moment, 11 | this.curve = Curves.linear, 12 | double x = 1.0, 13 | double y = 1.0, 14 | double z = 1.0, 15 | }) : xyz = Vector3(x, y, z); 16 | } 17 | -------------------------------------------------------------------------------- /lib/magic/diy_tab_controller.dart: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/lib/magic/diy_tab_controller.dart -------------------------------------------------------------------------------- /lib/other/debug_import.dart: -------------------------------------------------------------------------------- 1 | export 'package:flutterdebugpackage/debug_widget.dart' if(kReleaseMode) 'package:flutterreleasepackage/debug_widget.dart'; 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/other/dependy_widget_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'debug_import.dart'; 3 | 4 | 5 | class DependyWidgetDemo extends StatelessWidget { 6 | @override 7 | Widget build(BuildContext context) { 8 | return Scaffold( 9 | appBar: AppBar(), 10 | body: Column( 11 | children: [ 12 | TextWidget() 13 | ], 14 | ), 15 | ); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /lib/page/dart/list_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/widgets.dart'; 2 | 3 | class ListDemo extends StatefulWidget { 4 | 5 | @override 6 | State createState() => _ListDemoState(); 7 | } 8 | 9 | class _ListDemoState extends State { 10 | 11 | 12 | @override 13 | void initState() { 14 | super.initState(); 15 | List lists = List(3); 16 | lists.addAll([2,3,4]); 17 | } 18 | 19 | 20 | @override 21 | Widget build(BuildContext context) { 22 | return Container( 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/page/dev/diy_scroll_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_demo/magic/diy_scroll_physics.dart'; 3 | import 'package:flutter_demo/page/common/common.dart'; 4 | 5 | class DIYScrollDemo extends StatefulWidget { 6 | @override 7 | _DIYScrollDemoState createState() => _DIYScrollDemoState(); 8 | } 9 | 10 | class _DIYScrollDemoState extends State { 11 | @override 12 | Widget build(BuildContext context) { 13 | return _childContent(); 14 | } 15 | 16 | _childContent() { 17 | return ListView.builder( 18 | itemBuilder: (context, index) { 19 | return Common.getWidget(index); 20 | }, 21 | itemCount: 20, 22 | physics: DIYBouncingScrollPhysics(), 23 | scrollDirection: Axis.vertical, 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/page/dev/floatingframe/float_overlay_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | import 'app_float_box.dart'; 4 | 5 | class FloatOverLayDemo extends StatefulWidget { 6 | @override 7 | _FloatOverLayDemoState createState() => _FloatOverLayDemoState(); 8 | } 9 | 10 | class _FloatOverLayDemoState extends State { 11 | static OverlayEntry entry; 12 | 13 | @override 14 | Widget build(BuildContext context) { 15 | return Column( 16 | children: [ 17 | RaisedButton( 18 | child: Text("add"), 19 | onPressed: () { 20 | entry?.remove(); 21 | entry = null; 22 | entry = OverlayEntry(builder: (context) { 23 | return AppFloatBox(); 24 | }); 25 | Overlay.of(context).insert(entry); 26 | }, 27 | ), 28 | RaisedButton( 29 | child: Text("delete"), 30 | onPressed: () { 31 | entry?.remove(); 32 | entry = null; 33 | }, 34 | ), 35 | ], 36 | ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /lib/page/dev/floatingframe/float_stack_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | import 'app_float_box.dart'; 4 | 5 | class FloatStackDemo extends StatefulWidget { 6 | @override 7 | _FloatStackDemoState createState() => _FloatStackDemoState(); 8 | } 9 | 10 | class _FloatStackDemoState extends State { 11 | @override 12 | Widget build(BuildContext context) { 13 | return Stack( 14 | fit: StackFit.expand, 15 | children: [ 16 | AppFloatBox(), 17 | ], 18 | ); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /lib/page/dev/gif_play_one_bug_demo.dart: -------------------------------------------------------------------------------- 1 | 2 | 3 | import 'package:flutter/scheduler.dart'; 4 | import 'package:flutter/widgets.dart'; 5 | 6 | class GifPlayOnceBugDemo extends StatefulWidget { 7 | @override 8 | _GifPlayOnceBugDemoState createState() => _GifPlayOnceBugDemoState(); 9 | } 10 | 11 | class _GifPlayOnceBugDemoState extends State { 12 | 13 | Key key = Key("loop"); 14 | @override 15 | Widget build(BuildContext context) { 16 | return ListView( 17 | children: [ 18 | Text("带有loop的gif只播放一次后重新进页面不播放了。"), 19 | Image.asset( 20 | "images/gif_player_one.gif"), 21 | ], 22 | ); 23 | } 24 | 25 | @override 26 | void dispose() { 27 | super.dispose(); 28 | // 一种方式是清除缓存 29 | // PaintingBinding.instance.imageCache.clear(); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /lib/page/dev/sliver_refresh_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:flutter_demo/magic/diy_refresh.dart'; 4 | import 'package:flutter_demo/page/common/common.dart'; 5 | 6 | 7 | 8 | class SliverRefreshDemo extends StatefulWidget { 9 | @override 10 | _SliverRefreshDemoState createState() => _SliverRefreshDemoState(); 11 | } 12 | 13 | class _SliverRefreshDemoState extends State { 14 | @override 15 | Widget build(BuildContext context) { 16 | return CustomScrollView( 17 | physics: BouncingScrollPhysics(), 18 | slivers: [ 19 | DIYCupertinoSliverRefreshControl( 20 | onRefresh: () async { 21 | 22 | }, 23 | ), 24 | SliverList( 25 | delegate: SliverChildBuilderDelegate( 26 | (content, index) { 27 | return Common.getWidget(index); 28 | }, 29 | childCount: 100, 30 | ), 31 | ) 32 | ], 33 | ); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /lib/page/diy/download/encrypt_utils.dart: -------------------------------------------------------------------------------- 1 | 2 | import 'dart:convert'; 3 | import 'dart:typed_data'; 4 | import 'package:crypto/crypto.dart'; 5 | 6 | /// 7 | class EncryptUtils{ 8 | 9 | /// 10 | static String toMD5(String text) { 11 | Uint8List content = Utf8Encoder().convert(text); 12 | Digest digest = md5.convert(content); 13 | return digest.toString(); 14 | } 15 | } -------------------------------------------------------------------------------- /lib/page/diy/download/file_utils.dart: -------------------------------------------------------------------------------- 1 | 2 | import 'dart:io'; 3 | 4 | import 'package:path_provider/path_provider.dart'; 5 | import 'package:path/path.dart' as path; 6 | /// 7 | class FileUtils{ 8 | 9 | 10 | /// 11 | static Future rootPath({String resourcePath = "FlutterRes"}) async { 12 | /// android 根目录:getExternalFilesDir/version 13 | /// iOS 根目录:Caches/version 14 | Directory tempDirectory; 15 | if (Platform.isIOS) { 16 | tempDirectory = await getTemporaryDirectory(); 17 | } else { 18 | tempDirectory = await getExternalStorageDirectory(); 19 | } 20 | return path.join(tempDirectory.path, resourcePath); 21 | } 22 | 23 | /// 文件是否已存在 24 | static bool checkFileExist(String filePath){ 25 | File file = File(filePath); 26 | // 源文件已下载存在 27 | return file != null && file.existsSync(); 28 | } 29 | } -------------------------------------------------------------------------------- /lib/page/diy/emoji/emoji_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class EmojiDemo extends StatefulWidget { 4 | @override 5 | _EmojiDemoState createState() => _EmojiDemoState(); 6 | } 7 | 8 | class _EmojiDemoState extends State { 9 | @override 10 | Widget build(BuildContext context) { 11 | return Stack( 12 | fit: StackFit.expand, 13 | children: [ 14 | Container( 15 | color: Colors.blue, 16 | child: 17 | Text("String.fromCharCode(128513) + String.fromCharCode(128591)"), 18 | ), 19 | Container( 20 | color: Colors.blue, 21 | child: 22 | Text(String.fromCharCode(128513) + String.fromCharCode(128591)), 23 | ), 24 | ], 25 | ); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /lib/page/diy/flip/flip_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_demo/demo/flip/flip_num_text.dart'; 3 | 4 | class FlipDemo extends StatefulWidget { 5 | @override 6 | _FlipDemoState createState() => _FlipDemoState(); 7 | } 8 | 9 | class _FlipDemoState extends State { 10 | int num = 0; 11 | 12 | @override 13 | void initState() { 14 | super.initState(); 15 | } 16 | 17 | @override 18 | Widget build(BuildContext context) { 19 | return Center( 20 | child: Column( 21 | children: [ 22 | FlipNumText(num, 59), 23 | RaisedButton( 24 | child: Text("ADD"), 25 | onPressed: () { 26 | setState(() { 27 | if (num < 60) { 28 | num += 1; 29 | } else { 30 | num = 0; 31 | } 32 | }); 33 | }, 34 | ) 35 | ], 36 | ), 37 | ); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /lib/page/diy/shoppage/page3.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | import 'shop/shop_scroll_controller.dart'; 4 | import 'shop/shop_scroll_coordinator.dart'; 5 | 6 | class Page3 extends StatefulWidget { 7 | const Page3({Key key}) : super(key: key); 8 | 9 | @override 10 | _Page3State createState() => _Page3State(); 11 | } 12 | 13 | class _Page3State extends State { 14 | @override 15 | Widget build(BuildContext context) { 16 | return Center( 17 | child: Text("店铺信息页面"), 18 | ); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /lib/page/diy/sprite/custome_sprite_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_demo/magic/sprite/sprite_image.dart'; 3 | 4 | class CustomeSpriteDemo extends StatefulWidget { 5 | @override 6 | State createState() => _CustomeSpriteDemoState(); 7 | } 8 | 9 | class _CustomeSpriteDemoState extends State { 10 | @override 11 | Widget build(BuildContext context) { 12 | return Container( 13 | alignment: Alignment.center, 14 | child: Transform.scale( 15 | scale: 5.0, 16 | child: SpriteWidget( 17 | duration: Duration(milliseconds: 200), //动画的间隔 18 | image: Image.asset("res/img/user_role.png"), //精灵图 19 | spriteSize: Size(48.0, 48.0), //单画面尺寸 20 | ), 21 | ), 22 | ); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /lib/page/lib/cache_image_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:cached_network_image/cached_network_image.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | class CacheImageDemo extends StatefulWidget { 5 | @override 6 | _CacheImageDemoState createState() => _CacheImageDemoState(); 7 | } 8 | 9 | class _CacheImageDemoState extends State { 10 | @override 11 | Widget build(BuildContext context) { 12 | return Column( 13 | children: [ 14 | CachedNetworkImage( 15 | imageUrl: "http://via.placeholder.com/350x150", 16 | placeholder: (context, url) => CircularProgressIndicator(), 17 | errorWidget: (context, url, error) => Icon(Icons.error), 18 | ), 19 | ], 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /lib/page/lib/extended_nested_scroll/extended_nested_scroll_view.dart: -------------------------------------------------------------------------------- 1 | library extended_nested_scroll_view; 2 | 3 | export 'src/extended_nested_scroll_view.dart'; 4 | export 'src/extended_visibility_detector.dart'; 5 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage1/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'package:flutter_demo/page/lib/fishredux/demopage1/state.dart'; 3 | 4 | // 要做的操作在这里定义 5 | //TODO replace with your own action 6 | enum FishDemoPage1Action { 7 | updateState, 8 | add, 9 | reduce, 10 | actionAdd, 11 | actionReduce, 12 | Next, 13 | changeNum, 14 | } 15 | 16 | class FishDemoPage1ActionCreator { 17 | static Action onAddAction() { 18 | print("onAction"); 19 | return const Action(FishDemoPage1Action.add); 20 | } 21 | 22 | static Action onReduceAction() { 23 | print("onAction"); 24 | return const Action(FishDemoPage1Action.reduce); 25 | } 26 | 27 | static Action goToPage2() { 28 | print("onAction goToPage2"); 29 | return const Action(FishDemoPage1Action.Next); 30 | } 31 | 32 | static Action updateState(FishDemoPage1State page1state) { 33 | return Action(FishDemoPage1Action.updateState, payload: page1state); 34 | } 35 | 36 | static Action changeNumState(FishDemoPage1State state){ 37 | return Action(FishDemoPage1Action.updateState,payload: state); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage1/childview/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'package:flutter_demo/page/lib/fishredux/demopage1/childview/state.dart'; 3 | 4 | enum Demo1ChildViewAction { 5 | action, 6 | updateSelf, 7 | addSelf, 8 | } 9 | 10 | class Demo1ChildViewActionCreator { 11 | static Action onAction() { 12 | return const Action(Demo1ChildViewAction.action); 13 | } 14 | 15 | static Action onUpdateSelfAction(Demo1ChildViewState state) { 16 | return Action(Demo1ChildViewAction.updateSelf, payload: state); 17 | } 18 | static Action onAddSelfAction() { 19 | return Action(Demo1ChildViewAction.addSelf,); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage1/childview/component.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class Demo1ChildViewComponent extends Component { 9 | Demo1ChildViewComponent() 10 | : super( 11 | effect: buildEffect(), 12 | reducer: buildReducer(), 13 | view: buildView, 14 | dependencies: Dependencies( 15 | adapter: null, 16 | slots: >{}, 17 | ), 18 | ); 19 | } 20 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage1/childview/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'action.dart'; 3 | import 'state.dart'; 4 | 5 | Effect buildEffect() { 6 | return combineEffects(>{ 7 | Demo1ChildViewAction.action: _onAction, 8 | }); 9 | } 10 | 11 | void _onAction(Action action, Context ctx) { 12 | } 13 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage1/childview/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | Demo1ChildViewAction.action: _onAction, 10 | Demo1ChildViewAction.updateSelf: _onUpdateSelf, 11 | Demo1ChildViewAction.addSelf: _onAddSelf, 12 | }, 13 | ); 14 | } 15 | 16 | Demo1ChildViewState _onAction(Demo1ChildViewState state, Action action) { 17 | final Demo1ChildViewState newState = state.clone(); 18 | return newState; 19 | } 20 | 21 | Demo1ChildViewState _onUpdateSelf(Demo1ChildViewState state, Action action) { 22 | Demo1ChildViewState newState = action.payload; 23 | print("<> _onUpdateSelf ${newState.childNum}"); 24 | state.childNum = newState.childNum; 25 | return state; 26 | } 27 | 28 | Demo1ChildViewState _onAddSelf(Demo1ChildViewState state, Action action) { 29 | Demo1ChildViewState newState = state.clone(); 30 | newState.childNum++; 31 | return newState; 32 | } 33 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage1/childview/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | class Demo1ChildViewState implements Cloneable { 4 | int childNum = 0; 5 | 6 | Demo1ChildViewState({this.childNum}) { 7 | childNum = childNum ?? 0; 8 | } 9 | 10 | @override 11 | Demo1ChildViewState clone() { 12 | return Demo1ChildViewState(childNum: childNum); 13 | } 14 | } 15 | 16 | Demo1ChildViewState initState(Map args) { 17 | return Demo1ChildViewState(); 18 | } 19 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage1/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | //状态管理类 4 | class FishDemoPage1State implements Cloneable { 5 | int total = 0; 6 | bool add = false; 7 | 8 | int childNum = 0; 9 | 10 | FishDemoPage1State({this.total = 0, this.add = false, this.childNum = 0}); 11 | 12 | @override 13 | FishDemoPage1State clone() { 14 | return FishDemoPage1State() 15 | ..total = total 16 | ..add = add 17 | ..childNum = childNum; 18 | } 19 | } 20 | 21 | FishDemoPage1State initMainState(Map args) { 22 | return FishDemoPage1State(); 23 | } 24 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage2/FishModel.dart: -------------------------------------------------------------------------------- 1 | class FishModel{ 2 | 3 | String name; 4 | 5 | FishModel(this.name); 6 | 7 | 8 | } -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage2/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'FishModel.dart'; 4 | //TODO replace with your own action 5 | enum fishdemepage2Action { action, actionAsync, loadData, loadDataAsync } 6 | 7 | class fishdemepage2ActionCreator { 8 | static Action onAction() { 9 | return const Action(fishdemepage2Action.action); 10 | } 11 | 12 | static Action onActionAsync() { 13 | return const Action(fishdemepage2Action.actionAsync); 14 | } 15 | 16 | static Action onLoadData() { 17 | return const Action(fishdemepage2Action.loadData); 18 | } 19 | 20 | static Action onLoadDataAsync(List list) { 21 | return Action(fishdemepage2Action.loadDataAsync, payload: list); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage2/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class FishDemoPage2Page extends Page> { 9 | FishDemoPage2Page() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage2/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'FishModel.dart'; 4 | 5 | class fishdemepage2State implements Cloneable { 6 | List models = List(); 7 | 8 | @override 9 | fishdemepage2State clone() { 10 | return fishdemepage2State()..models = models; 11 | } 12 | } 13 | 14 | fishdemepage2State initState(Map args) { 15 | return fishdemepage2State(); 16 | } 17 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage3/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | //TODO replace with your own action 4 | enum FishDemoListPageAction { action ,loadData} 5 | 6 | class FishDemoListPageActionCreator { 7 | static Action onAction() { 8 | return const Action(FishDemoListPageAction.action); 9 | } 10 | static Action onLoadData(){ 11 | return const Action(FishDemoListPageAction.loadData); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage3/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'action.dart'; 3 | import 'list/state.dart'; 4 | import 'state.dart'; 5 | 6 | Effect buildEffect() { 7 | return combineEffects(>{ 8 | Lifecycle.initState: _init, 9 | FishDemoListPageAction.action: _onAction, 10 | }); 11 | } 12 | 13 | void _onAction(Action action, Context ctx) { 14 | } 15 | 16 | void _init(Action action, Context ctx){ 17 | print("fishdemepage3State _init"); 18 | ctx.dispatch(FishDemoListPageActionCreator.onLoadData()); 19 | } 20 | 21 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage3/headerview/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | //TODO replace with your own action 4 | enum HeaderViewAction { action } 5 | 6 | class HeaderViewActionCreator { 7 | static Action onAction() { 8 | return const Action(HeaderViewAction.action); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage3/headerview/component.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'package:flutter_demo/page/lib/fishredux/demopage3/list/state.dart'; 3 | 4 | import 'effect.dart'; 5 | import 'reducer.dart'; 6 | import 'state.dart'; 7 | import 'view.dart'; 8 | 9 | class HeaderViewComponent extends Component { 10 | HeaderViewComponent() 11 | : super( 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, slots: >{}), 17 | ); 18 | } 19 | 20 | class HeaderViewConnector extends ConnOp { 21 | @override 22 | HeaderViewState get(fishListState state) { 23 | return HeaderViewState(); 24 | } 25 | 26 | @override 27 | void set(fishListState state, HeaderViewState subState) { 28 | super.set(state, subState); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage3/headerview/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'action.dart'; 3 | import 'state.dart'; 4 | 5 | Effect buildEffect() { 6 | return combineEffects(>{ 7 | HeaderViewAction.action: _onAction, 8 | }); 9 | } 10 | 11 | void _onAction(Action action, Context ctx) { 12 | } 13 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage3/headerview/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | HeaderViewAction.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | HeaderViewState _onAction(HeaderViewState state, Action action) { 15 | final HeaderViewState newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage3/headerview/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | class HeaderViewState implements Cloneable { 4 | 5 | @override 6 | HeaderViewState clone() { 7 | return HeaderViewState(); 8 | } 9 | } 10 | 11 | HeaderViewState initState(Map args) { 12 | return HeaderViewState(); 13 | } 14 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage3/headerview/view.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | import 'action.dart'; 5 | import 'state.dart'; 6 | 7 | Widget buildView(HeaderViewState state, Dispatch dispatch, ViewService viewService) { 8 | return Container( 9 | height: 200, 10 | color: Colors.amberAccent, 11 | child: Center( 12 | child: Text("this is Header"), 13 | ), 14 | ); 15 | } 16 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage3/itemcell/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | //TODO replace with your own action 4 | enum fishComponent1Action { action } 5 | 6 | class fishComponent1ActionCreator { 7 | static Action onAction() { 8 | return const Action(fishComponent1Action.action); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage3/itemcell/component.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class fishComponent1Component extends Component { 9 | fishComponent1Component() 10 | : super( 11 | effect: buildEffect(), 12 | reducer: buildReducer(), 13 | view: buildView, 14 | dependencies: Dependencies( 15 | adapter: null, 16 | slots: >{ 17 | }),); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage3/itemcell/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'action.dart'; 3 | import 'state.dart'; 4 | 5 | Effect buildEffect() { 6 | return combineEffects(>{ 7 | fishComponent1Action.action: _onAction, 8 | }); 9 | } 10 | 11 | void _onAction(Action action, Context ctx) { 12 | } 13 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage3/itemcell/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | fishComponent1Action.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | fishComponent1State _onAction(fishComponent1State state, Action action) { 15 | final fishComponent1State newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage3/itemcell/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | class fishComponent1State implements Cloneable { 4 | String name; 5 | String sex; 6 | int num; 7 | 8 | 9 | fishComponent1State({this.name, this.sex, this.num}); 10 | 11 | @override 12 | fishComponent1State clone() { 13 | return fishComponent1State() 14 | ..name = this.name 15 | ..sex = this.sex 16 | ..num = this.num; 17 | } 18 | } 19 | 20 | fishComponent1State initState(Map args) { 21 | return fishComponent1State(); 22 | } 23 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage3/itemcell/view.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | import 'action.dart'; 5 | import 'state.dart'; 6 | 7 | Widget buildView( 8 | fishComponent1State state, Dispatch dispatch, ViewService viewService) { 9 | return Container( 10 | child: Column( 11 | children: [ 12 | Text(state.name), 13 | Text(state.sex), 14 | Text("${state.num}"), 15 | ], 16 | ), 17 | ); 18 | } 19 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage3/list/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | //TODO replace with your own action 4 | enum fishListAction { action } 5 | 6 | class fishListActionCreator { 7 | static Action onAction() { 8 | return const Action(fishListAction.action); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage3/list/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'package:flutter_demo/page/lib/fishredux/demopage3/itemcell/state.dart'; 3 | 4 | class fishListState implements Cloneable { 5 | 6 | List items = List(); 7 | 8 | @override 9 | fishListState clone() { 10 | return fishListState(); 11 | } 12 | } 13 | 14 | fishListState initState(Map args) { 15 | return fishListState(); 16 | } 17 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage3/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'headerview/component.dart'; 5 | import 'list/adapter.dart'; 6 | import 'list/state.dart'; 7 | import 'reducer.dart'; 8 | import 'view.dart'; 9 | 10 | class FishDemoListPagePage extends Page> { 11 | FishDemoListPagePage() 12 | : super( 13 | initState: initState, 14 | effect: buildEffect(), 15 | reducer: buildReducer(), 16 | view: buildView, 17 | dependencies: Dependencies( 18 | adapter: NoneConn() + fishListAdapter(), 19 | slots: >{ 20 | "header": HeaderViewConnector() + HeaderViewComponent() 21 | }), 22 | middleware: >[], 23 | ); 24 | } 25 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage3/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | class FishDemoListPageState implements Cloneable { 4 | 5 | @override 6 | FishDemoListPageState clone() { 7 | return FishDemoListPageState(); 8 | } 9 | } 10 | 11 | FishDemoListPageState initState(Map args) { 12 | return FishDemoListPageState(); 13 | } 14 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage3/view.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | import 'action.dart'; 5 | import 'list/state.dart'; 6 | import 'state.dart'; 7 | 8 | Widget buildView( 9 | fishListState state, Dispatch dispatch, ViewService viewService) { 10 | ListAdapter adapter = viewService.buildAdapter(); 11 | Widget widget = viewService.buildComponent("header"); 12 | return Scaffold( 13 | appBar: AppBar(), 14 | body: Container( 15 | child: Column( 16 | children: [ 17 | widget, 18 | Expanded( 19 | child: ListView.builder( 20 | itemBuilder: adapter.itemBuilder, 21 | itemCount: adapter.itemCount, 22 | ), 23 | ), 24 | ], 25 | ), 26 | ), 27 | ); 28 | } 29 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage4/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | //TODO replace with your own action 4 | enum masterPageAction { action } 5 | 6 | class masterPageActionCreator { 7 | static Action onAction() { 8 | return const Action(masterPageAction.action); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage4/child/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'package:flutter_demo/page/lib/fishredux/demopage4/child/state.dart'; 3 | 4 | enum ChildAction { 5 | action, 6 | update, 7 | } 8 | 9 | class ChildActionCreator { 10 | static Action onAction(ChildState state) { 11 | return Action(ChildAction.action, payload: state); 12 | } 13 | 14 | static Action onUpdate(ChildState state) { 15 | return Action(ChildAction.update, payload: state); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage4/child/component.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class ChildComponent extends Component { 9 | ChildComponent() 10 | : super( 11 | effect: buildEffect(), 12 | reducer: buildReducer(), 13 | view: buildView, 14 | dependencies: Dependencies( 15 | adapter: null, 16 | slots: >{ 17 | }),); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage4/child/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'action.dart'; 3 | import 'state.dart'; 4 | 5 | Effect buildEffect() { 6 | return combineEffects(>{ 7 | ChildAction.action: _onAction, 8 | }); 9 | } 10 | 11 | void _onAction(Action action, Context ctx) { 12 | // ctx.dispatch(ChildActionCreator.onUpdate(action.payload)); 13 | } 14 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage4/child/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | ChildAction.update: _onUpdate, 10 | }, 11 | ); 12 | } 13 | 14 | ChildState _onUpdate(ChildState state, Action action) { 15 | final ChildState newState = action.payload; 16 | println("ReduxData child _onUpdate newState ${newState.child1Num}"); 17 | return newState; 18 | } 19 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage4/child/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | class ChildState implements Cloneable { 4 | int child1Num = 0; 5 | 6 | ChildState({this.child1Num = 0}) { 7 | this.child1Num = child1Num ?? 0; 8 | } 9 | 10 | @override 11 | ChildState clone() { 12 | return ChildState(child1Num: child1Num); 13 | } 14 | } 15 | 16 | ChildState initState(Map args) { 17 | return ChildState(); 18 | } 19 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage4/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'action.dart'; 3 | import 'state.dart'; 4 | 5 | Effect buildEffect() { 6 | return combineEffects(>{ 7 | masterPageAction.action: _onAction, 8 | }); 9 | } 10 | 11 | void _onAction(Action action, Context ctx) { 12 | } 13 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage4/main/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | //TODO replace with your own action 4 | enum mainAction { action } 5 | 6 | class mainActionCreator { 7 | static Action onAction() { 8 | return const Action(mainAction.action); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage4/main/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'action.dart'; 3 | import 'state.dart'; 4 | 5 | Effect buildEffect() { 6 | return combineEffects(>{ 7 | mainAction.action: _onAction, 8 | }); 9 | } 10 | 11 | void _onAction(Action action, Context ctx) { 12 | } 13 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage4/main/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | mainAction.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | mainState _onAction(mainState state, Action action) { 15 | final mainState newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage4/main/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | class mainState implements Cloneable { 4 | int child1Num = 0; 5 | 6 | mainState({this.child1Num = 0}) { 7 | this.child1Num = child1Num ?? 0; 8 | } 9 | 10 | @override 11 | mainState clone() { 12 | return mainState(child1Num: child1Num); 13 | } 14 | } 15 | 16 | mainState initState(Map args) { 17 | return mainState(); 18 | } 19 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage4/main/view.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | import 'action.dart'; 5 | import 'state.dart'; 6 | 7 | Widget buildView(mainState state, Dispatch dispatch, ViewService viewService) { 8 | return Container( 9 | child: Column( 10 | children: [ 11 | viewService.buildComponent("child1"), 12 | // viewService.buildComponent("child2"), 13 | // viewService.buildComponent("child3"), 14 | ], 15 | ), 16 | ); 17 | } 18 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage4/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | masterPageAction.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | masterPageState _onAction(masterPageState state, Action action) { 15 | final masterPageState newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage4/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | class masterPageState implements Cloneable { 4 | int num = 0; 5 | 6 | masterPageState({this.num}) { 7 | this.num = num ?? 0; 8 | } 9 | 10 | @override 11 | masterPageState clone() { 12 | return masterPageState(num: num); 13 | } 14 | } 15 | 16 | masterPageState initState(Map args) { 17 | return masterPageState(); 18 | } 19 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/demopage4/view.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | import 'action.dart'; 5 | import 'state.dart'; 6 | 7 | Widget buildView( 8 | masterPageState state, Dispatch dispatch, ViewService viewService) { 9 | Widget widget = viewService.buildComponent("main"); 10 | return Scaffold( 11 | appBar: AppBar(), 12 | body: Container( 13 | child: widget, 14 | ), 15 | ); 16 | } 17 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/list/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | //TODO replace with your own action 4 | enum DemoListAdapterAction { action } 5 | 6 | class DemoListAdapterActionCreator { 7 | static Action onAction() { 8 | return const Action(DemoListAdapterAction.action); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/list/adapter/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'package:flutter_demo/page/lib/fishredux/list/view/state.dart'; 3 | 4 | enum SpecialShopItemAction { 5 | onUpdateItem, 6 | onChangeRelatedShops, 7 | } 8 | 9 | class SpecialShopActionCreator { 10 | 11 | static Action onChangeRelatedShops(SpecialShopRelatedItemState state) { 12 | return Action(SpecialShopItemAction.onChangeRelatedShops, payload: state); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/list/adapter/reducer.dart: -------------------------------------------------------------------------------- 1 | 2 | import 'package:fish_redux/fish_redux.dart'; 3 | import 'package:flutter_demo/page/lib/fishredux/list/state.dart'; 4 | 5 | import 'action.dart'; 6 | import 'state.dart'; 7 | 8 | Reducer buildReducer() { 9 | return asReducer(>{ 10 | SpecialShopItemAction.onUpdateItem: _update, 11 | SpecialShopItemAction.onChangeRelatedShops: _changeRelatedShops, 12 | }); 13 | } 14 | 15 | DemoListAdapterState _update(DemoListAdapterState state, Action action) { 16 | DemoListAdapterState newState = state.clone(); 17 | return newState; 18 | } 19 | 20 | DemoListAdapterState _changeRelatedShops(DemoListAdapterState state,Action action){ 21 | return state; 22 | } 23 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/list/adapter/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | class FollowSpecialShopState implements Cloneable { 4 | List list; 5 | 6 | int index; 7 | 8 | FollowSpecialShopState({this.list, this.index = 1}); 9 | 10 | @override 11 | FollowSpecialShopState clone() { 12 | return FollowSpecialShopState( 13 | list: list, 14 | index: index, 15 | ); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/list/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Effect buildEffect() { 7 | return combineEffects(>{ 8 | DemoListAdapterAction.action: _onAction, 9 | }); 10 | } 11 | 12 | void _onAction(Action action, Context ctx) { 13 | } 14 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/list/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | DemoListAdapterAction.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | DemoListAdapterState _onAction(DemoListAdapterState state, Action action) { 15 | final DemoListAdapterState newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/list/view.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | import 'action.dart'; 5 | import 'state.dart'; 6 | 7 | Widget buildView( 8 | DemoListAdapterState state, Dispatch dispatch, ViewService viewService) { 9 | print("<> ---- > page buildView"); 10 | ListAdapter listAdapter = viewService?.buildAdapter(); 11 | return Scaffold( 12 | appBar: AppBar(), 13 | body: Container( 14 | child: ListView.builder( 15 | itemBuilder: (context, index) { 16 | return listAdapter.itemBuilder(context,index); 17 | }, 18 | itemCount: listAdapter?.itemCount ?? 0, 19 | ), 20 | ), 21 | ); 22 | } 23 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/list/view/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'state.dart'; 4 | 5 | enum SpecialShopRelatedItemAction { 6 | changeShops, 7 | updateState 8 | } 9 | 10 | class SpecialShopRelatedItemActionCreator { 11 | static Action onChangeShops(SpecialShopRelatedItemState state) { 12 | return Action(SpecialShopRelatedItemAction.changeShops, payload: state); 13 | } 14 | static Action onUpdate(SpecialShopRelatedItemState state) { 15 | return Action(SpecialShopRelatedItemAction.updateState,payload: state); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/list/view/component.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class SpecialShopRelatedItemComponent 9 | extends Component { 10 | SpecialShopRelatedItemComponent() 11 | : super( 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | ); 16 | } 17 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/list/view/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'action.dart'; 3 | import 'state.dart'; 4 | 5 | Effect buildEffect() { 6 | return combineEffects(>{ 7 | SpecialShopRelatedItemAction.changeShops: _onChangeShop, 8 | }); 9 | } 10 | 11 | void _onChangeShop(Action action, Context ctx) { 12 | SpecialShopRelatedItemState data = action.payload; 13 | data.listIndex = data.listIndex + 1; 14 | ctx.dispatch(SpecialShopRelatedItemActionCreator.onUpdate(data)); 15 | } 16 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/list/view/reducer.dart: -------------------------------------------------------------------------------- 1 | 2 | import 'package:fish_redux/fish_redux.dart'; 3 | 4 | import 'action.dart'; 5 | import 'state.dart'; 6 | 7 | Reducer buildReducer() { 8 | return asReducer(>{ 9 | SpecialShopRelatedItemAction.updateState: _onUpdate, 10 | }); 11 | } 12 | 13 | SpecialShopRelatedItemState _onUpdate(SpecialShopRelatedItemState state,Action action){ 14 | SpecialShopRelatedItemState data = action.payload; 15 | if(state.index == data.index){ 16 | SpecialShopRelatedItemState newState = state.clone(); 17 | newState.listIndex = data.listIndex; 18 | print("<> _onUpdate (state.listIndex ${state.listIndex} == data.listIndex ${data.listIndex}"); 19 | return newState; 20 | // state.listIndex = data.listIndex; 21 | // print("<> _onUpdate (state.listIndex ${state.listIndex} == data.listIndex ${data.listIndex}"); 22 | // return state; 23 | } 24 | return state; 25 | } 26 | -------------------------------------------------------------------------------- /lib/page/lib/fishredux/list/view/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/widgets.dart'; 2 | import 'package:fish_redux/fish_redux.dart'; 3 | import 'package:uuid/uuid.dart'; 4 | 5 | class SpecialShopRelatedItemState 6 | implements Cloneable { 7 | int index; 8 | 9 | int listIndex; 10 | 11 | 12 | 13 | SpecialShopRelatedItemState({this.index, this.listIndex = 1, String uniqueId}); 14 | 15 | @override 16 | SpecialShopRelatedItemState clone() { 17 | return SpecialShopRelatedItemState( 18 | index: index, 19 | listIndex: listIndex, 20 | ); 21 | } 22 | 23 | } 24 | 25 | abstract class UniqueIdState> 26 | implements Cloneable { 27 | final String uniqueId; 28 | 29 | UniqueIdState(String uniqueId) : this.uniqueId = uniqueId ?? Uuid().v4(); 30 | } 31 | -------------------------------------------------------------------------------- /lib/page/lib/http_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class HttpDemo extends StatefulWidget { 4 | @override 5 | _HttpDemoState createState() => _HttpDemoState(); 6 | } 7 | 8 | class _HttpDemoState extends State { 9 | String content = ""; 10 | 11 | @override 12 | void initState() { 13 | super.initState(); 14 | // HNetClient.BASE_URL = "http://gank.io"; 15 | } 16 | 17 | _getReponse() async { 18 | // HDialogUtil.showLoadingDialog(context); 19 | // var response = await HNetClient.get("/api/xiandu/categories", {}); 20 | // if (response != null) { 21 | // setState(() { 22 | // content = response.toString(); 23 | // }); 24 | // } 25 | // Navigator.of(context).pop(); 26 | } 27 | 28 | @override 29 | Widget build(BuildContext context) { 30 | return Column( 31 | children: [ 32 | RaisedButton( 33 | child: Text("GET"), 34 | onPressed: () { 35 | _getReponse(); 36 | }, 37 | ), 38 | Text(content), 39 | ], 40 | ); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /lib/page/lib/lottie_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class LottieDemo extends StatefulWidget { 4 | @override 5 | _LottieDemoState createState() => _LottieDemoState(); 6 | } 7 | 8 | class _LottieDemoState extends State { 9 | @override 10 | Widget build(BuildContext context) { 11 | return ListView( 12 | children: [ 13 | // Lottie.asset( 14 | // 'res/lottie/LottieLogo1.json', 15 | // ), 16 | // Lottie.network( 17 | // 'https://raw.githubusercontent.com/xvrh/lottie-flutter/master/example/assets/Mobilo/A.json', 18 | // ), 19 | // Lottie.asset( 20 | // 'res/lottie/angel.zip', 21 | // ), 22 | ], 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/page/lib/over_nested_scroll/custom_nested_scroll_view.dart: -------------------------------------------------------------------------------- 1 | /// A NestedScrollView that supports outer scroller to top overscroll. 2 | /// 3 | /// Based on https://github.com/fluttercandies/extended_nested_scroll_view 4 | /// 5 | /// and https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/widgets/nested_scroll_view.dart 6 | library custom_nested_scroll_view; 7 | 8 | export 'src/nested_scroll_view.dart'; 9 | -------------------------------------------------------------------------------- /lib/page/lib/photo_view/src/keeping_widget_alive.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/widgets.dart'; 2 | 3 | 4 | class KeepingWidgetAlive extends StatefulWidget { 5 | final Widget child; 6 | 7 | // ignore: sort_constructors_first 8 | const KeepingWidgetAlive({Key key, this.child}) : super(key: key); 9 | 10 | @override 11 | _KeepingWidgetAliveState createState() => _KeepingWidgetAliveState(); 12 | } 13 | 14 | class _KeepingWidgetAliveState extends State with AutomaticKeepAliveClientMixin{ 15 | 16 | @override 17 | void initState() { 18 | super.initState(); 19 | } 20 | 21 | @override 22 | Widget build(BuildContext context) { 23 | super.build(context); 24 | return widget.child; 25 | } 26 | 27 | @override 28 | bool get wantKeepAlive => true; 29 | } -------------------------------------------------------------------------------- /lib/page/lib/photo_view/src/photo_view_scale_state.dart: -------------------------------------------------------------------------------- 1 | /// A way to represent the step of the "doubletap gesture cycle" in which PhotoView is. 2 | enum PhotoViewScaleState { 3 | initial, 4 | covering, 5 | originalSize, 6 | zoomedIn, 7 | zoomedOut, 8 | } 9 | 10 | extension PhotoViewScaleStateIZoomingExtension on PhotoViewScaleState { 11 | bool get isScaleStateZooming => 12 | this == PhotoViewScaleState.zoomedIn || 13 | this == PhotoViewScaleState.zoomedOut; 14 | } 15 | -------------------------------------------------------------------------------- /lib/page/lib/photo_view/src/utils/photo_view_hero_attributes.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/widgets.dart'; 2 | 3 | /// Data class that holds the attributes that are going to be passed to 4 | /// [PhotoViewImageWrapper]'s [Hero]. 5 | class PhotoViewHeroAttributes { 6 | const PhotoViewHeroAttributes({ 7 | @required this.tag, 8 | this.createRectTween, 9 | this.flightShuttleBuilder, 10 | this.placeholderBuilder, 11 | this.transitionOnUserGestures = false, 12 | }) : assert(tag != null); 13 | 14 | /// Mirror to [Hero.tag] 15 | final Object tag; 16 | 17 | /// Mirror to [Hero.createRectTween] 18 | final CreateRectTween createRectTween; 19 | 20 | /// Mirror to [Hero.flightShuttleBuilder] 21 | final HeroFlightShuttleBuilder flightShuttleBuilder; 22 | 23 | /// Mirror to [Hero.placeholderBuilder] 24 | final HeroPlaceholderBuilder placeholderBuilder; 25 | 26 | /// Mirror to [Hero.transitionOnUserGestures] 27 | final bool transitionOnUserGestures; 28 | } 29 | -------------------------------------------------------------------------------- /lib/page/lib/swiper_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_swiper/flutter_swiper.dart'; 3 | 4 | class SwiperDemo extends StatefulWidget { 5 | @override 6 | _SwiperDemoState createState() => _SwiperDemoState(); 7 | } 8 | 9 | class _SwiperDemoState extends State { 10 | @override 11 | Widget build(BuildContext context) { 12 | return Swiper( 13 | itemBuilder: (BuildContext context, int index) { 14 | print("<> $index"); 15 | return new Image.network( 16 | "http://via.placeholder.com/350x150", 17 | fit: BoxFit.fill, 18 | ); 19 | }, 20 | itemCount: 3, 21 | pagination: new SwiperPagination(), 22 | viewportFraction: 0.8, 23 | scale: 0.9, 24 | outer: false, 25 | autoplay: true, 26 | controller: SwiperController(), 27 | ); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /lib/page/lib/waterfall/waterfall_flow.dart: -------------------------------------------------------------------------------- 1 | library waterfall_flow; 2 | 3 | export 'package:extended_list_library/extended_list_library.dart'; 4 | export 'src/rendering/sliver_waterfall_flow.dart'; 5 | export 'src/widgets/scroll_view.dart'; 6 | export 'src/widgets/sliver.dart'; 7 | -------------------------------------------------------------------------------- /lib/page/widget/common_widget_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_demo/base/base_widget_ui.dart'; 3 | 4 | class CommonWidgetDemo extends StatefulWidget { 5 | final Map widgets; 6 | 7 | CommonWidgetDemo(this.widgets); 8 | 9 | @override 10 | _CommonWidgetDemoState createState() => _CommonWidgetDemoState(); 11 | } 12 | 13 | class _CommonWidgetDemoState extends State { 14 | @override 15 | Widget build(BuildContext context) { 16 | return ListView( 17 | children: widget.widgets.entries.map((e) { 18 | return FlatButton( 19 | child: Text(e.key), 20 | onPressed: () { 21 | Navigator.of(context).push( 22 | MaterialPageRoute( 23 | builder: (BuildContext context) => BaseViewPage(e.key, e.value), 24 | ), 25 | ); 26 | }, 27 | ); 28 | }).toList(), 29 | ); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /lib/page/widget/image/image_view_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ImageViewDemo extends StatefulWidget { 4 | @override 5 | _ImageViewDemoState createState() => _ImageViewDemoState(); 6 | } 7 | 8 | class _ImageViewDemoState extends State { 9 | @override 10 | Widget build(BuildContext context) { 11 | return ListView( 12 | children: [ 13 | // webp类型图片不支持旋转 14 | Image.asset("images/bigimage.jpeg",height: 100,), 15 | Image.asset("images/bigimage.webp",height: 100,), 16 | Image.network( 17 | "https://cdn-sqn.aigei.com/assets/site/img/tool/demo-bgremover-new.png", 18 | color: Colors.black, 19 | height: 100, 20 | ), 21 | Image.network( 22 | "https://cdn-sqn.aigei.com/assets/site/img/tool/demo-bgremover-new.png", 23 | height: 100, 24 | ), 25 | ], 26 | ); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /lib/page/widget/list/list_wheel_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_demo/page/common/common.dart'; 3 | 4 | class ListWheelDemo extends StatefulWidget { 5 | @override 6 | _ListWheelDemoState createState() => _ListWheelDemoState(); 7 | } 8 | 9 | class _ListWheelDemoState extends State { 10 | @override 11 | Widget build(BuildContext context) { 12 | return ListWheelScrollView.useDelegate( 13 | diameterRatio: 1.5, 14 | perspective: 0.01, 15 | offAxisFraction: -0.5, 16 | // useMagnifier: true, // 使用放大镜 17 | // magnification: 2, // 放大倍数 18 | overAndUnderCenterOpacity: 1.0, 19 | //透明度 20 | squeeze: 1, 21 | renderChildrenOutsideViewport: true, 22 | itemExtent: 100, 23 | onSelectedItemChanged: (index) { 24 | print("ListWheelScrollView onSelectedItemChanged $index"); 25 | }, 26 | clipBehavior: Clip.none, 27 | childDelegate: ListWheelChildBuilderDelegate( 28 | builder: (context, index) { 29 | return Common.getWidget(index); 30 | }, 31 | childCount: 100, 32 | ), 33 | ); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /lib/page/widget/sliver/sliver_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | 4 | 5 | class SliverDemo extends StatefulWidget { 6 | @override 7 | _SliverDemoState createState() => _SliverDemoState(); 8 | } 9 | 10 | class _SliverDemoState extends State { 11 | @override 12 | Widget build(BuildContext context) { 13 | return Container( 14 | child: SliverToBoxAdapter(), 15 | ); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /lib/page/widget/sliver/sliver_list_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_demo/page/common/common.dart'; 3 | 4 | class SliverListDemo extends StatefulWidget { 5 | @override 6 | _SliverListDemoState createState() => _SliverListDemoState(); 7 | } 8 | 9 | class _SliverListDemoState extends State { 10 | @override 11 | Widget build(BuildContext context) { 12 | return CustomScrollView( 13 | slivers: [ 14 | SliverList( 15 | delegate: SliverChildBuilderDelegate( 16 | (context, index) { 17 | return Common.getWidget(index); 18 | }, 19 | ), 20 | ), 21 | ], 22 | ); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /lib/ui/container_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ContainerDemo extends StatefulWidget { 4 | @override 5 | _ContainerDemoState createState() => _ContainerDemoState(); 6 | } 7 | 8 | class _ContainerDemoState extends State { 9 | @override 10 | Widget build(BuildContext context) { 11 | return Scaffold( 12 | appBar: AppBar(), 13 | body: Column( 14 | children: [ 15 | Container( 16 | child: Text("Container"), 17 | decoration: BoxDecoration( 18 | color: Colors.blue, 19 | border: Border.all(color: Colors.black, width: 1), 20 | borderRadius: BorderRadius.circular(2), 21 | ), 22 | ) 23 | ], 24 | ), 25 | ); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /lib/ui/listview_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ListViewDemo extends StatefulWidget { 4 | @override 5 | _ListViewDemoState createState() => _ListViewDemoState(); 6 | } 7 | 8 | class _ListViewDemoState extends State { 9 | @override 10 | Widget build(BuildContext context) { 11 | return Scaffold( 12 | appBar: AppBar(), 13 | body: Container( 14 | height: 200, 15 | color: Colors.yellow, 16 | padding: EdgeInsets.only(top: 10,bottom: 10), 17 | child: ListView.builder( 18 | shrinkWrap: true, 19 | scrollDirection: Axis.horizontal, 20 | itemBuilder: (context, position) { 21 | return Container( 22 | width: 100, 23 | height: 100, 24 | color: Colors.blue, 25 | child: Text("sssss"), 26 | ); 27 | }, 28 | itemCount: 10, 29 | ), 30 | ), 31 | ); 32 | } 33 | } 34 | 35 | 36 | -------------------------------------------------------------------------------- /lib/ui/size_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class SizeDemo extends StatelessWidget { 4 | @override 5 | Widget build(BuildContext context) { 6 | Size size = MediaQuery.of(context).size; 7 | 8 | double proWidth = 200 / 750; 9 | 10 | return Scaffold( 11 | appBar: AppBar( 12 | title: Text("UI设计稿尺寸问题"), 13 | ), 14 | body: Column( 15 | children: [ 16 | Container( 17 | width: 200, 18 | height: 100, 19 | child: Center( 20 | child: Text("固定大小的200x100"), 21 | ), 22 | color: Colors.amber, 23 | ), 24 | Container( 25 | width: proWidth * size.width, 26 | height: proWidth * size.width * 100 / 200, 27 | child: Center( 28 | child: Text( 29 | "适配屏幕的200x100 \n ${proWidth * size.width} \n ${proWidth * size.width * 100 / 200}", 30 | style: TextStyle(fontSize: 10), 31 | ), 32 | ), 33 | color: Colors.brown, 34 | ) 35 | ], 36 | ), 37 | ); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /lib/ui/stack_demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class StackDemo extends StatefulWidget { 4 | @override 5 | _StackDemoState createState() => _StackDemoState(); 6 | } 7 | 8 | class _StackDemoState extends State { 9 | @override 10 | Widget build(BuildContext context) { 11 | return Scaffold( 12 | appBar: AppBar(), 13 | body: Container( 14 | color: Colors.green, 15 | child: Stack( 16 | children: [ 17 | Positioned( 18 | bottom: 0, 19 | child: Text("LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL"), 20 | ) 21 | ], 22 | ), 23 | ), 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /res/img/flower.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/res/img/flower.png -------------------------------------------------------------------------------- /res/img/ic_run.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/res/img/ic_run.gif -------------------------------------------------------------------------------- /res/img/ic_star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/res/img/ic_star.png -------------------------------------------------------------------------------- /res/img/jay.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/res/img/jay.jpg -------------------------------------------------------------------------------- /res/img/live.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/res/img/live.png -------------------------------------------------------------------------------- /res/img/love.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/res/img/love.png -------------------------------------------------------------------------------- /res/img/shopping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/res/img/shopping.png -------------------------------------------------------------------------------- /res/img/start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/res/img/start.png -------------------------------------------------------------------------------- /res/img/user_role.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/res/img/user_role.png -------------------------------------------------------------------------------- /res/img/wa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/res/img/wa.png -------------------------------------------------------------------------------- /res/img/yellow_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/res/img/yellow_start.png -------------------------------------------------------------------------------- /res/lottie/angel.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lifelikejuly/Flutter_Demo/3bbd008a360791253aabccf090a1262fbba87582/res/lottie/angel.zip --------------------------------------------------------------------------------