├── .flutter-plugins ├── .gitignore ├── .idea ├── libraries │ ├── Dart_SDK.xml │ ├── Flutter_for_Android.xml │ └── KotlinJavaRuntime.xml ├── modules.xml ├── runConfigurations │ └── main_dart.xml └── workspace.xml ├── .metadata ├── .vscode └── launch.json ├── LICENSE ├── README.md ├── android ├── .gradle │ ├── 4.10.2 │ │ ├── fileChanges │ │ │ └── last-build.bin │ │ ├── fileContent │ │ │ └── fileContent.lock │ │ ├── fileHashes │ │ │ ├── fileHashes.bin │ │ │ ├── fileHashes.lock │ │ │ └── resourceHashesCache.bin │ │ ├── gc.properties │ │ ├── javaCompile │ │ │ ├── classAnalysis.bin │ │ │ ├── jarAnalysis.bin │ │ │ ├── javaCompile.lock │ │ │ └── taskHistory.bin │ │ └── taskHistory │ │ │ ├── taskHistory.bin │ │ │ └── taskHistory.lock │ ├── buildOutputCleanup │ │ ├── buildOutputCleanup.lock │ │ ├── cache.properties │ │ └── outputFiles.bin │ └── vcs-1 │ │ └── gc.properties ├── .idea │ ├── encodings.xml │ ├── gradle.xml │ ├── misc.xml │ ├── modules.xml │ ├── runConfigurations.xml │ ├── vcs.xml │ └── workspace.xml ├── .project ├── .settings │ └── org.eclipse.buildship.core.prefs ├── android.iml ├── app │ ├── .classpath │ ├── .project │ ├── .settings │ │ └── org.eclipse.buildship.core.prefs │ ├── build.gradle │ └── src │ │ ├── debug │ │ └── AndroidManifest.xml │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ ├── com │ │ │ │ └── example │ │ │ │ │ └── flutter_sample │ │ │ │ │ └── MainActivity.java │ │ │ └── io │ │ │ │ └── flutter │ │ │ │ └── plugins │ │ │ │ └── GeneratedPluginRegistrant.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 ├── flutter_sample_android.iml ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── local.properties └── settings.gradle ├── assets ├── data │ └── mock │ │ └── mock_mall.json └── images │ ├── 2.0x │ ├── comment.png │ ├── details_page_reading_quantity_iconxxhdpi.png │ └── user_tips_img.jpg │ ├── 3.0x │ ├── comment.png │ ├── details_page_reading_quantity_iconxxhdpi.png │ └── user_tips_img.jpg │ ├── banner_default_img.png │ ├── comment.png │ ├── details_page_reading_quantity_iconxxhdpi.png │ ├── home_add_icon.png │ ├── home_search_icon.png │ ├── icon_invite_drive.png │ ├── icon_join.png │ ├── icon_me_header.png │ ├── icon_new_group_chat.png │ ├── icon_right_arrow.png │ ├── icon_scan_code.png │ ├── icon_send_moment.png │ ├── icon_shoppingcar.png │ ├── left_back_icon.png │ ├── my_reservation_icon.png │ ├── persional_friend.png │ ├── persional_friend_on.png │ ├── personal_center_car_bill_icon.png │ ├── personal_center_car_order_icon.png │ ├── personal_center_custom_service_icon.png │ ├── personal_center_my_favorite_icon.png │ ├── personal_center_my_qrcode_icon.png │ ├── personal_center_my_voucher_icon.png │ ├── personal_center_nio_value_icon.png │ ├── personal_center_setting_icon.png │ ├── personal_gift.png │ ├── personal_gift_on.png │ ├── personal_go.png │ ├── personal_home.png │ ├── personal_home_on.png │ ├── personal_integrate.png │ ├── personal_my.png │ ├── personal_my_on.png │ ├── personal_mycar.png │ ├── personal_mycar_on.png │ ├── point_icon.png │ ├── sign_in_bg.9.png │ ├── sign_out_bg.9.png │ └── user_tips_img.jpg ├── flutter_01.log ├── flutter_sample.iml ├── ios ├── .symlinks │ ├── flutter │ └── plugins │ │ ├── flustars │ │ ├── fluttertoast │ │ └── shared_preferences ├── Flutter │ ├── App.framework │ │ ├── App │ │ ├── Info.plist │ │ └── flutter_assets │ │ │ ├── AssetManifest.json │ │ │ ├── FontManifest.json │ │ │ ├── LICENSE │ │ │ ├── assets │ │ │ ├── data │ │ │ │ └── mock │ │ │ │ │ └── mock_mall.json │ │ │ └── images │ │ │ │ ├── 2.0x │ │ │ │ ├── comment.png │ │ │ │ ├── details_page_reading_quantity_iconxxhdpi.png │ │ │ │ └── user_tips_img.jpg │ │ │ │ ├── 3.0x │ │ │ │ ├── comment.png │ │ │ │ ├── details_page_reading_quantity_iconxxhdpi.png │ │ │ │ └── user_tips_img.jpg │ │ │ │ ├── banner_default_img.png │ │ │ │ ├── comment.png │ │ │ │ ├── details_page_reading_quantity_iconxxhdpi.png │ │ │ │ ├── home_add_icon.png │ │ │ │ ├── home_search_icon.png │ │ │ │ ├── icon_invite_drive.png │ │ │ │ ├── icon_join.png │ │ │ │ ├── icon_me_header.png │ │ │ │ ├── icon_new_group_chat.png │ │ │ │ ├── icon_right_arrow.png │ │ │ │ ├── icon_scan_code.png │ │ │ │ ├── icon_send_moment.png │ │ │ │ ├── icon_shoppingcar.png │ │ │ │ ├── left_back_icon.png │ │ │ │ ├── my_reservation_icon.png │ │ │ │ ├── persional_friend.png │ │ │ │ ├── persional_friend_on.png │ │ │ │ ├── personal_center_car_bill_icon.png │ │ │ │ ├── personal_center_car_order_icon.png │ │ │ │ ├── personal_center_custom_service_icon.png │ │ │ │ ├── personal_center_my_favorite_icon.png │ │ │ │ ├── personal_center_my_qrcode_icon.png │ │ │ │ ├── personal_center_my_voucher_icon.png │ │ │ │ ├── personal_center_nio_value_icon.png │ │ │ │ ├── personal_center_setting_icon.png │ │ │ │ ├── personal_gift.png │ │ │ │ ├── personal_gift_on.png │ │ │ │ ├── personal_go.png │ │ │ │ ├── personal_home.png │ │ │ │ ├── personal_home_on.png │ │ │ │ ├── personal_integrate.png │ │ │ │ ├── personal_my.png │ │ │ │ ├── personal_my_on.png │ │ │ │ ├── personal_mycar.png │ │ │ │ ├── personal_mycar_on.png │ │ │ │ ├── point_icon.png │ │ │ │ ├── sign_in_bg.9.png │ │ │ │ ├── sign_out_bg.9.png │ │ │ │ └── user_tips_img.jpg │ │ │ ├── fonts │ │ │ └── MaterialIcons-Regular.ttf │ │ │ ├── isolate_snapshot_data │ │ │ ├── kernel_blob.bin │ │ │ ├── packages │ │ │ └── cupertino_icons │ │ │ │ └── assets │ │ │ │ └── CupertinoIcons.ttf │ │ │ └── vm_snapshot_data │ ├── AppFrameworkInfo.plist │ ├── Debug.xcconfig │ ├── Flutter.framework │ │ ├── Flutter │ │ ├── Headers │ │ │ ├── Flutter.h │ │ │ ├── FlutterAppDelegate.h │ │ │ ├── FlutterBinaryMessenger.h │ │ │ ├── FlutterCallbackCache.h │ │ │ ├── FlutterChannels.h │ │ │ ├── FlutterCodecs.h │ │ │ ├── FlutterDartProject.h │ │ │ ├── FlutterEngine.h │ │ │ ├── FlutterHeadlessDartRunner.h │ │ │ ├── FlutterMacros.h │ │ │ ├── FlutterPlatformViews.h │ │ │ ├── FlutterPlugin.h │ │ │ ├── FlutterPluginAppLifeCycleDelegate.h │ │ │ ├── FlutterTexture.h │ │ │ └── FlutterViewController.h │ │ ├── Info.plist │ │ ├── Modules │ │ │ └── module.modulemap │ │ └── icudtl.dat │ ├── Generated.xcconfig │ └── Release.xcconfig ├── Podfile ├── Podfile.lock ├── Pods │ ├── Headers │ │ ├── Private │ │ │ ├── flustars │ │ │ │ └── FlustarsPlugin.h │ │ │ ├── fluttertoast │ │ │ │ ├── FluttertoastPlugin.h │ │ │ │ └── UIView+Toast.h │ │ │ └── shared_preferences │ │ │ │ └── SharedPreferencesPlugin.h │ │ └── Public │ │ │ ├── Flutter │ │ │ └── Flutter │ │ │ │ ├── Flutter.h │ │ │ │ ├── FlutterAppDelegate.h │ │ │ │ ├── FlutterBinaryMessenger.h │ │ │ │ ├── FlutterCallbackCache.h │ │ │ │ ├── FlutterChannels.h │ │ │ │ ├── FlutterCodecs.h │ │ │ │ ├── FlutterDartProject.h │ │ │ │ ├── FlutterEngine.h │ │ │ │ ├── FlutterHeadlessDartRunner.h │ │ │ │ ├── FlutterMacros.h │ │ │ │ ├── FlutterPlatformViews.h │ │ │ │ ├── FlutterPlugin.h │ │ │ │ ├── FlutterPluginAppLifeCycleDelegate.h │ │ │ │ ├── FlutterTexture.h │ │ │ │ └── FlutterViewController.h │ │ │ ├── flustars │ │ │ └── FlustarsPlugin.h │ │ │ ├── fluttertoast │ │ │ ├── FluttertoastPlugin.h │ │ │ └── UIView+Toast.h │ │ │ └── shared_preferences │ │ │ └── SharedPreferencesPlugin.h │ ├── Local Podspecs │ │ ├── Flutter.podspec.json │ │ ├── flustars.podspec.json │ │ ├── fluttertoast.podspec.json │ │ └── shared_preferences.podspec.json │ ├── Manifest.lock │ ├── Pods.xcodeproj │ │ ├── project.pbxproj │ │ └── xcuserdata │ │ │ └── jiajie.wang.xcuserdatad │ │ │ └── xcschemes │ │ │ ├── Pods-Runner.xcscheme │ │ │ ├── flustars.xcscheme │ │ │ ├── fluttertoast.xcscheme │ │ │ ├── shared_preferences.xcscheme │ │ │ └── xcschememanagement.plist │ └── Target Support Files │ │ ├── Pods-Runner │ │ ├── Pods-Runner-acknowledgements.markdown │ │ ├── Pods-Runner-acknowledgements.plist │ │ ├── Pods-Runner-dummy.m │ │ ├── Pods-Runner-frameworks.sh │ │ ├── Pods-Runner-resources.sh │ │ ├── Pods-Runner.debug.xcconfig │ │ ├── Pods-Runner.profile.xcconfig │ │ └── Pods-Runner.release.xcconfig │ │ ├── flustars │ │ ├── flustars-dummy.m │ │ ├── flustars-prefix.pch │ │ └── flustars.xcconfig │ │ ├── fluttertoast │ │ ├── fluttertoast-dummy.m │ │ ├── fluttertoast-prefix.pch │ │ └── fluttertoast.xcconfig │ │ └── shared_preferences │ │ ├── shared_preferences-dummy.m │ │ ├── shared_preferences-prefix.pch │ │ └── shared_preferences.xcconfig ├── Runner.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── xcshareddata │ │ └── xcschemes │ │ └── Runner.xcscheme ├── Runner.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── WorkspaceSettings.xcsettings ├── 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 │ ├── GeneratedPluginRegistrant.h │ ├── GeneratedPluginRegistrant.m │ ├── Info.plist │ └── main.m └── ServiceDefinitions.json ├── lib ├── base │ ├── base_imp.dart │ ├── page │ │ ├── base_stateful_page.dart │ │ └── base_stateless_page.dart │ └── widget │ │ ├── base_stateful_widget.dart │ │ └── base_stateless_widget.dart ├── bean │ └── home │ │ ├── main │ │ └── item_type_three.dart │ │ ├── mall │ │ └── mall_main.dart │ │ └── me │ │ └── user_info.dart ├── component │ ├── home_main_item.dart │ ├── item_component_type_one │ │ ├── item_center.dart │ │ ├── item_foot.dart │ │ └── item_title.dart │ ├── item_component_type_three │ │ ├── item_three_center.dart │ │ └── item_three_root_layout.dart │ ├── item_component_type_two │ │ ├── item_title.dart │ │ ├── item_two_root_layout.dart │ │ └── item_view_pager.dart │ ├── item_one_root_layout.dart │ └── widget │ │ ├── bottom_navigation_widget.dart │ │ ├── common │ │ ├── app_bar.dart │ │ └── dividing_line.dart │ │ ├── navigation_keep_alive.dart │ │ ├── page_indicator.dart │ │ └── pop │ │ ├── home_popover.dart │ │ ├── home_popover_menu_item.dart │ │ └── paint_event.dart ├── config │ ├── application.dart │ ├── route_handlers.dart │ └── routes.dart ├── helpers │ └── color_helpers.dart ├── main.dart ├── page │ ├── demo_message_component.dart │ ├── demo_result_component.dart │ ├── demo_simple_component.dart │ ├── friend │ │ └── FriendComponent.dart │ ├── gift │ │ ├── article │ │ │ ├── mall_article_item.dart │ │ │ └── mall_article_root.dart │ │ ├── mall_all_goods.dart │ │ ├── mall_big_item.dart │ │ ├── mall_goods_root.dart │ │ ├── mall_left_navigation.dart │ │ ├── mall_no_more.dart │ │ ├── mall_page_banner.dart │ │ ├── mall_page_root.dart │ │ └── mall_summary.dart │ ├── home │ │ ├── top_experience.dart │ │ ├── top_information.dart │ │ ├── top_moment.dart │ │ └── top_recommend.dart │ ├── me │ │ ├── me_page_list.dart │ │ ├── me_page_root.dart │ │ ├── me_page_title.dart │ │ └── me_setting │ │ │ ├── me_setting_item.dart │ │ │ └── me_setting_list.dart │ ├── my_car │ │ └── MyCarComponent.dart │ └── page_one.dart ├── style │ └── style.dart ├── utils │ ├── data_service │ │ └── track_service.dart │ ├── date_format.dart │ ├── screen_util.dart │ └── toast_utils.dart └── view │ └── home_page.dart ├── pubspec.yaml └── test └── widget_test.dart /.flutter-plugins: -------------------------------------------------------------------------------- 1 | flustars=/Users/jiajie.wang/Documents/learn/flutter/.pub-cache/hosted/pub.dartlang.org/flustars-0.2.5/ 2 | fluttertoast=/Users/jiajie.wang/Documents/learn/flutter/.pub-cache/hosted/pub.dartlang.org/fluttertoast-3.0.4/ 3 | shared_preferences=/Users/jiajie.wang/Documents/learn/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences-0.5.3/ 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://www.dartlang.org/guides/libraries/private-files 2 | 3 | # Files and directories created by pub 4 | .dart_tool/ 5 | .packages 6 | .pub/ 7 | build/ 8 | # If you're building an application, you may want to check-in your pubspec.lock 9 | pubspec.lock 10 | 11 | # Directory created by dartdoc 12 | # If you don't generate documentation locally you can remove this line. 13 | doc/api/ 14 | -------------------------------------------------------------------------------- /.idea/libraries/Dart_SDK.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /.idea/libraries/Flutter_for_Android.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/libraries/KotlinJavaRuntime.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/runConfigurations/main_dart.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /.idea/workspace.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /.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: 8661d8aecd626f7f57ccbcb735553edc05a2e713 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // 使用 IntelliSense 了解相关属性。 3 | // 悬停以查看现有属性的描述。 4 | // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "name": "Flutter", 9 | "request": "launch", 10 | "type": "dart" 11 | } 12 | ] 13 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 王亟亟 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # flutter_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.io/docs/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://flutter.io/docs/cookbook) 13 | 14 | For help getting started with Flutter, view our 15 | [online documentation](https://flutter.io/docs), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /android/.gradle/4.10.2/fileChanges/last-build.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /android/.gradle/4.10.2/fileContent/fileContent.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/android/.gradle/4.10.2/fileContent/fileContent.lock -------------------------------------------------------------------------------- /android/.gradle/4.10.2/fileHashes/fileHashes.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/android/.gradle/4.10.2/fileHashes/fileHashes.bin -------------------------------------------------------------------------------- /android/.gradle/4.10.2/fileHashes/fileHashes.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/android/.gradle/4.10.2/fileHashes/fileHashes.lock -------------------------------------------------------------------------------- /android/.gradle/4.10.2/fileHashes/resourceHashesCache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/android/.gradle/4.10.2/fileHashes/resourceHashesCache.bin -------------------------------------------------------------------------------- /android/.gradle/4.10.2/gc.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/android/.gradle/4.10.2/gc.properties -------------------------------------------------------------------------------- /android/.gradle/4.10.2/javaCompile/classAnalysis.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/android/.gradle/4.10.2/javaCompile/classAnalysis.bin -------------------------------------------------------------------------------- /android/.gradle/4.10.2/javaCompile/jarAnalysis.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/android/.gradle/4.10.2/javaCompile/jarAnalysis.bin -------------------------------------------------------------------------------- /android/.gradle/4.10.2/javaCompile/javaCompile.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/android/.gradle/4.10.2/javaCompile/javaCompile.lock -------------------------------------------------------------------------------- /android/.gradle/4.10.2/javaCompile/taskHistory.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/android/.gradle/4.10.2/javaCompile/taskHistory.bin -------------------------------------------------------------------------------- /android/.gradle/4.10.2/taskHistory/taskHistory.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/android/.gradle/4.10.2/taskHistory/taskHistory.bin -------------------------------------------------------------------------------- /android/.gradle/4.10.2/taskHistory/taskHistory.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/android/.gradle/4.10.2/taskHistory/taskHistory.lock -------------------------------------------------------------------------------- /android/.gradle/buildOutputCleanup/buildOutputCleanup.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock -------------------------------------------------------------------------------- /android/.gradle/buildOutputCleanup/cache.properties: -------------------------------------------------------------------------------- 1 | #Fri Mar 22 15:51:25 CST 2019 2 | gradle.version=4.10.2 3 | -------------------------------------------------------------------------------- /android/.gradle/buildOutputCleanup/outputFiles.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/android/.gradle/buildOutputCleanup/outputFiles.bin -------------------------------------------------------------------------------- /android/.gradle/vcs-1/gc.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/android/.gradle/vcs-1/gc.properties -------------------------------------------------------------------------------- /android/.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /android/.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /android/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 14 | -------------------------------------------------------------------------------- /android/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /android/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /android/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | android 4 | Project android created by Buildship. 5 | 6 | 7 | 8 | 9 | org.eclipse.buildship.core.gradleprojectbuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.buildship.core.gradleprojectnature 16 | 17 | 18 | -------------------------------------------------------------------------------- /android/.settings/org.eclipse.buildship.core.prefs: -------------------------------------------------------------------------------- 1 | connection.project.dir= 2 | eclipse.preferences.version=1 3 | -------------------------------------------------------------------------------- /android/android.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /android/app/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /android/app/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | app 4 | Project app created by Buildship. 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | org.eclipse.buildship.core.gradleprojectbuilder 15 | 16 | 17 | 18 | 19 | 20 | org.eclipse.jdt.core.javanature 21 | org.eclipse.buildship.core.gradleprojectnature 22 | 23 | 24 | -------------------------------------------------------------------------------- /android/app/.settings/org.eclipse.buildship.core.prefs: -------------------------------------------------------------------------------- 1 | connection.project.dir=.. 2 | eclipse.preferences.version=1 3 | -------------------------------------------------------------------------------- /android/app/build.gradle: -------------------------------------------------------------------------------- 1 | def localProperties = new Properties() 2 | def localPropertiesFile = rootProject.file('local.properties') 3 | if (localPropertiesFile.exists()) { 4 | localPropertiesFile.withReader('UTF-8') { reader -> 5 | localProperties.load(reader) 6 | } 7 | } 8 | 9 | def flutterRoot = localProperties.getProperty('flutter.sdk') 10 | if (flutterRoot == null) { 11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") 12 | } 13 | 14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode') 15 | if (flutterVersionCode == null) { 16 | flutterVersionCode = '1' 17 | } 18 | 19 | def flutterVersionName = localProperties.getProperty('flutter.versionName') 20 | if (flutterVersionName == null) { 21 | flutterVersionName = '1.0' 22 | } 23 | 24 | apply plugin: 'com.android.application' 25 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" 26 | 27 | android { 28 | compileSdkVersion 28 29 | 30 | lintOptions { 31 | disable 'InvalidPackage' 32 | } 33 | 34 | defaultConfig { 35 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). 36 | applicationId "com.example.flutter_sample" 37 | minSdkVersion 16 38 | targetSdkVersion 28 39 | versionCode flutterVersionCode.toInteger() 40 | versionName flutterVersionName 41 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 42 | } 43 | 44 | buildTypes { 45 | release { 46 | // TODO: Add your own signing config for the release build. 47 | // Signing with the debug keys for now, so `flutter run --release` works. 48 | signingConfig signingConfigs.debug 49 | } 50 | } 51 | } 52 | 53 | flutter { 54 | source '../..' 55 | } 56 | 57 | dependencies { 58 | testImplementation 'junit:junit:4.12' 59 | androidTestImplementation 'com.android.support.test:runner:1.0.2' 60 | androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' 61 | } 62 | -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 9 | 13 | 20 | 24 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /android/app/src/main/java/com/example/flutter_sample/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.flutter_sample; 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 | -------------------------------------------------------------------------------- /android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java: -------------------------------------------------------------------------------- 1 | package io.flutter.plugins; 2 | 3 | import io.flutter.plugin.common.PluginRegistry; 4 | import com.thl.flustars.FlustarsPlugin; 5 | import io.github.ponnamkarthik.toast.fluttertoast.FluttertoastPlugin; 6 | import io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin; 7 | 8 | /** 9 | * Generated file. Do not edit. 10 | */ 11 | public final class GeneratedPluginRegistrant { 12 | public static void registerWith(PluginRegistry registry) { 13 | if (alreadyRegisteredWith(registry)) { 14 | return; 15 | } 16 | FlustarsPlugin.registerWith(registry.registrarFor("com.thl.flustars.FlustarsPlugin")); 17 | FluttertoastPlugin.registerWith(registry.registrarFor("io.github.ponnamkarthik.toast.fluttertoast.FluttertoastPlugin")); 18 | SharedPreferencesPlugin.registerWith(registry.registrarFor("io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin")); 19 | } 20 | 21 | private static boolean alreadyRegisteredWith(PluginRegistry registry) { 22 | final String key = GeneratedPluginRegistrant.class.getCanonicalName(); 23 | if (registry.hasPlugin(key)) { 24 | return true; 25 | } 26 | registry.registrarFor(key); 27 | return false; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /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/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /android/flutter_sample_android.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /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/gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 12 | set DEFAULT_JVM_OPTS= 13 | 14 | set DIRNAME=%~dp0 15 | if "%DIRNAME%" == "" set DIRNAME=. 16 | set APP_BASE_NAME=%~n0 17 | set APP_HOME=%DIRNAME% 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windowz variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | if "%@eval[2+2]" == "4" goto 4NT_args 53 | 54 | :win9xME_args 55 | @rem Slurp the command line arguments. 56 | set CMD_LINE_ARGS= 57 | set _SKIP=2 58 | 59 | :win9xME_args_slurp 60 | if "x%~1" == "x" goto execute 61 | 62 | set CMD_LINE_ARGS=%* 63 | goto execute 64 | 65 | :4NT_args 66 | @rem Get arguments from the 4NT Shell from JP Software 67 | set CMD_LINE_ARGS=%$ 68 | 69 | :execute 70 | @rem Setup the command line 71 | 72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if "%ERRORLEVEL%"=="0" goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 85 | exit /b 1 86 | 87 | :mainEnd 88 | if "%OS%"=="Windows_NT" endlocal 89 | 90 | :omega 91 | -------------------------------------------------------------------------------- /android/local.properties: -------------------------------------------------------------------------------- 1 | ## This file must *NOT* be checked into Version Control Systems, 2 | # as it contains information specific to your local configuration. 3 | # 4 | # Location of the SDK. This is only used by Gradle. 5 | # For customization when using a Version Control System, please read the 6 | # header note. 7 | #Mon Jun 03 14:06:19 CST 2019 8 | flutter.buildMode=debug 9 | ndk.dir=/Users/jiajie.wang/Library/Android/sdk/ndk-bundle 10 | flutter.versionName=1.0.0 11 | flutter.sdk=/Users/jiajie.wang/Documents/learn/flutter 12 | sdk.dir=/Users/jiajie.wang/Library/Android/sdk 13 | flutter.versionCode=1 14 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /assets/images/2.0x/comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/2.0x/comment.png -------------------------------------------------------------------------------- /assets/images/2.0x/details_page_reading_quantity_iconxxhdpi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/2.0x/details_page_reading_quantity_iconxxhdpi.png -------------------------------------------------------------------------------- /assets/images/2.0x/user_tips_img.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/2.0x/user_tips_img.jpg -------------------------------------------------------------------------------- /assets/images/3.0x/comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/3.0x/comment.png -------------------------------------------------------------------------------- /assets/images/3.0x/details_page_reading_quantity_iconxxhdpi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/3.0x/details_page_reading_quantity_iconxxhdpi.png -------------------------------------------------------------------------------- /assets/images/3.0x/user_tips_img.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/3.0x/user_tips_img.jpg -------------------------------------------------------------------------------- /assets/images/banner_default_img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/banner_default_img.png -------------------------------------------------------------------------------- /assets/images/comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/comment.png -------------------------------------------------------------------------------- /assets/images/details_page_reading_quantity_iconxxhdpi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/details_page_reading_quantity_iconxxhdpi.png -------------------------------------------------------------------------------- /assets/images/home_add_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/home_add_icon.png -------------------------------------------------------------------------------- /assets/images/home_search_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/home_search_icon.png -------------------------------------------------------------------------------- /assets/images/icon_invite_drive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/icon_invite_drive.png -------------------------------------------------------------------------------- /assets/images/icon_join.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/icon_join.png -------------------------------------------------------------------------------- /assets/images/icon_me_header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/icon_me_header.png -------------------------------------------------------------------------------- /assets/images/icon_new_group_chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/icon_new_group_chat.png -------------------------------------------------------------------------------- /assets/images/icon_right_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/icon_right_arrow.png -------------------------------------------------------------------------------- /assets/images/icon_scan_code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/icon_scan_code.png -------------------------------------------------------------------------------- /assets/images/icon_send_moment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/icon_send_moment.png -------------------------------------------------------------------------------- /assets/images/icon_shoppingcar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/icon_shoppingcar.png -------------------------------------------------------------------------------- /assets/images/left_back_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/left_back_icon.png -------------------------------------------------------------------------------- /assets/images/my_reservation_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/my_reservation_icon.png -------------------------------------------------------------------------------- /assets/images/persional_friend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/persional_friend.png -------------------------------------------------------------------------------- /assets/images/persional_friend_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/persional_friend_on.png -------------------------------------------------------------------------------- /assets/images/personal_center_car_bill_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/personal_center_car_bill_icon.png -------------------------------------------------------------------------------- /assets/images/personal_center_car_order_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/personal_center_car_order_icon.png -------------------------------------------------------------------------------- /assets/images/personal_center_custom_service_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/personal_center_custom_service_icon.png -------------------------------------------------------------------------------- /assets/images/personal_center_my_favorite_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/personal_center_my_favorite_icon.png -------------------------------------------------------------------------------- /assets/images/personal_center_my_qrcode_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/personal_center_my_qrcode_icon.png -------------------------------------------------------------------------------- /assets/images/personal_center_my_voucher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/personal_center_my_voucher_icon.png -------------------------------------------------------------------------------- /assets/images/personal_center_nio_value_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/personal_center_nio_value_icon.png -------------------------------------------------------------------------------- /assets/images/personal_center_setting_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/personal_center_setting_icon.png -------------------------------------------------------------------------------- /assets/images/personal_gift.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/personal_gift.png -------------------------------------------------------------------------------- /assets/images/personal_gift_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/personal_gift_on.png -------------------------------------------------------------------------------- /assets/images/personal_go.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/personal_go.png -------------------------------------------------------------------------------- /assets/images/personal_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/personal_home.png -------------------------------------------------------------------------------- /assets/images/personal_home_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/personal_home_on.png -------------------------------------------------------------------------------- /assets/images/personal_integrate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/personal_integrate.png -------------------------------------------------------------------------------- /assets/images/personal_my.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/personal_my.png -------------------------------------------------------------------------------- /assets/images/personal_my_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/personal_my_on.png -------------------------------------------------------------------------------- /assets/images/personal_mycar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/personal_mycar.png -------------------------------------------------------------------------------- /assets/images/personal_mycar_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/personal_mycar_on.png -------------------------------------------------------------------------------- /assets/images/point_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/point_icon.png -------------------------------------------------------------------------------- /assets/images/sign_in_bg.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/sign_in_bg.9.png -------------------------------------------------------------------------------- /assets/images/sign_out_bg.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/sign_out_bg.9.png -------------------------------------------------------------------------------- /assets/images/user_tips_img.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/assets/images/user_tips_img.jpg -------------------------------------------------------------------------------- /flutter_sample.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /ios/.symlinks/flutter: -------------------------------------------------------------------------------- 1 | /Users/jiajie.wang/Documents/learn/flutter/bin/cache/artifacts/engine -------------------------------------------------------------------------------- /ios/.symlinks/plugins/flustars: -------------------------------------------------------------------------------- 1 | /Users/jiajie.wang/Documents/learn/flutter/.pub-cache/hosted/pub.dartlang.org/flustars-0.2.5 -------------------------------------------------------------------------------- /ios/.symlinks/plugins/fluttertoast: -------------------------------------------------------------------------------- 1 | /Users/jiajie.wang/Documents/learn/flutter/.pub-cache/hosted/pub.dartlang.org/fluttertoast-3.0.4 -------------------------------------------------------------------------------- /ios/.symlinks/plugins/shared_preferences: -------------------------------------------------------------------------------- 1 | /Users/jiajie.wang/Documents/learn/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences-0.5.3 -------------------------------------------------------------------------------- /ios/Flutter/App.framework/App: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/App -------------------------------------------------------------------------------- /ios/Flutter/App.framework/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 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/App.framework/flutter_assets/FontManifest.json: -------------------------------------------------------------------------------- 1 | [{"fonts":[{"asset":"fonts/MaterialIcons-Regular.ttf"}],"family":"MaterialIcons"},{"family":"packages/cupertino_icons/CupertinoIcons","fonts":[{"asset":"packages/cupertino_icons/assets/CupertinoIcons.ttf"}]}] -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/2.0x/comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/2.0x/comment.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/2.0x/details_page_reading_quantity_iconxxhdpi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/2.0x/details_page_reading_quantity_iconxxhdpi.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/2.0x/user_tips_img.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/2.0x/user_tips_img.jpg -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/3.0x/comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/3.0x/comment.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/3.0x/details_page_reading_quantity_iconxxhdpi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/3.0x/details_page_reading_quantity_iconxxhdpi.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/3.0x/user_tips_img.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/3.0x/user_tips_img.jpg -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/banner_default_img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/banner_default_img.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/comment.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/details_page_reading_quantity_iconxxhdpi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/details_page_reading_quantity_iconxxhdpi.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/home_add_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/home_add_icon.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/home_search_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/home_search_icon.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/icon_invite_drive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/icon_invite_drive.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/icon_join.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/icon_join.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/icon_me_header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/icon_me_header.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/icon_new_group_chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/icon_new_group_chat.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/icon_right_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/icon_right_arrow.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/icon_scan_code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/icon_scan_code.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/icon_send_moment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/icon_send_moment.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/icon_shoppingcar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/icon_shoppingcar.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/left_back_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/left_back_icon.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/my_reservation_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/my_reservation_icon.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/persional_friend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/persional_friend.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/persional_friend_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/persional_friend_on.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/personal_center_car_bill_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/personal_center_car_bill_icon.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/personal_center_car_order_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/personal_center_car_order_icon.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/personal_center_custom_service_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/personal_center_custom_service_icon.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/personal_center_my_favorite_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/personal_center_my_favorite_icon.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/personal_center_my_qrcode_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/personal_center_my_qrcode_icon.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/personal_center_my_voucher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/personal_center_my_voucher_icon.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/personal_center_nio_value_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/personal_center_nio_value_icon.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/personal_center_setting_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/personal_center_setting_icon.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/personal_gift.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/personal_gift.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/personal_gift_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/personal_gift_on.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/personal_go.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/personal_go.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/personal_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/personal_home.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/personal_home_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/personal_home_on.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/personal_integrate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/personal_integrate.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/personal_my.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/personal_my.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/personal_my_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/personal_my_on.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/personal_mycar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/personal_mycar.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/personal_mycar_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/personal_mycar_on.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/point_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/point_icon.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/sign_in_bg.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/sign_in_bg.9.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/sign_out_bg.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/sign_out_bg.9.png -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/assets/images/user_tips_img.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/assets/images/user_tips_img.jpg -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/fonts/MaterialIcons-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/fonts/MaterialIcons-Regular.ttf -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/isolate_snapshot_data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/isolate_snapshot_data -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/kernel_blob.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/kernel_blob.bin -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/packages/cupertino_icons/assets/CupertinoIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/packages/cupertino_icons/assets/CupertinoIcons.ttf -------------------------------------------------------------------------------- /ios/Flutter/App.framework/flutter_assets/vm_snapshot_data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/App.framework/flutter_assets/vm_snapshot_data -------------------------------------------------------------------------------- /ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 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/Flutter.framework/Flutter: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/Flutter.framework/Flutter -------------------------------------------------------------------------------- /ios/Flutter/Flutter.framework/Headers/Flutter.h: -------------------------------------------------------------------------------- 1 | // Copyright 2013 The Flutter Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | #ifndef FLUTTER_FLUTTER_H_ 6 | #define FLUTTER_FLUTTER_H_ 7 | 8 | /** 9 | BREAKING CHANGES: 10 | 11 | December 17, 2018: 12 | - Changed designated initializer on FlutterEngine 13 | 14 | October 5, 2018: 15 | - Removed FlutterNavigationController.h/.mm 16 | - Changed return signature of `FlutterDartHeadlessCodeRunner.run*` from void 17 | to bool 18 | - Removed HeadlessPlatformViewIOS 19 | - Marked FlutterDartHeadlessCodeRunner deprecated 20 | 21 | August 31, 2018: Marked -[FlutterDartProject 22 | initFromDefaultSourceForConfiguration] and FlutterStandardBigInteger as 23 | unavailable. 24 | 25 | July 26, 2018: Marked -[FlutterDartProject 26 | initFromDefaultSourceForConfiguration] deprecated. 27 | 28 | February 28, 2018: Removed "initWithFLXArchive" and 29 | "initWithFLXArchiveWithScriptSnapshot". 30 | 31 | January 15, 2018: Marked "initWithFLXArchive" and 32 | "initWithFLXArchiveWithScriptSnapshot" as unavailable following the 33 | deprecation from December 11, 2017. Scheduled to be removed on February 34 | 19, 2018. 35 | 36 | January 09, 2018: Deprecated "FlutterStandardBigInteger" and its use in 37 | "FlutterStandardMessageCodec" and "FlutterStandardMethodCodec". Scheduled to 38 | be marked as unavailable once the deprecation has been available on the 39 | flutter/flutter alpha branch for four weeks. "FlutterStandardBigInteger" was 40 | needed because the Dart 1.0 int type had no size limit. With Dart 2.0, the 41 | int type is a fixed-size, 64-bit signed integer. If you need to communicate 42 | larger integers, use NSString encoding instead. 43 | 44 | December 11, 2017: Deprecated "initWithFLXArchive" and 45 | "initWithFLXArchiveWithScriptSnapshot" and scheculed the same to be marked as 46 | unavailable on January 15, 2018. Instead, "initWithFlutterAssets" and 47 | "initWithFlutterAssetsWithScriptSnapshot" should be used. The reason for this 48 | change is that the FLX archive will be deprecated and replaced with a flutter 49 | assets directory containing the same files as the FLX did. 50 | 51 | November 29, 2017: Added a BREAKING CHANGES section. 52 | */ 53 | 54 | #include "FlutterAppDelegate.h" 55 | #include "FlutterBinaryMessenger.h" 56 | #include "FlutterCallbackCache.h" 57 | #include "FlutterChannels.h" 58 | #include "FlutterCodecs.h" 59 | #include "FlutterDartProject.h" 60 | #include "FlutterEngine.h" 61 | #include "FlutterHeadlessDartRunner.h" 62 | #include "FlutterMacros.h" 63 | #include "FlutterPlatformViews.h" 64 | #include "FlutterPlugin.h" 65 | #include "FlutterPluginAppLifeCycleDelegate.h" 66 | #include "FlutterTexture.h" 67 | #include "FlutterViewController.h" 68 | 69 | #endif // FLUTTER_FLUTTER_H_ 70 | -------------------------------------------------------------------------------- /ios/Flutter/Flutter.framework/Headers/FlutterAppDelegate.h: -------------------------------------------------------------------------------- 1 | // Copyright 2013 The Flutter Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | #ifndef FLUTTER_FLUTTERAPPDELEGATE_H_ 6 | #define FLUTTER_FLUTTERAPPDELEGATE_H_ 7 | 8 | #import 9 | 10 | #include "FlutterMacros.h" 11 | #include "FlutterPlugin.h" 12 | 13 | /** 14 | * `UIApplicationDelegate` subclass for simple apps that want default behavior. 15 | * 16 | * This class implements the following behaviors: 17 | * * Status bar touches are forwarded to the key window's root view 18 | * `FlutterViewController`, in order to trigger scroll to top. 19 | * * Keeps the Flutter connection open in debug mode when the phone screen 20 | * locks. 21 | * 22 | * App delegates for Flutter applications are *not* required to inherit from 23 | * this class. Developers of custom app delegate classes should copy and paste 24 | * code as necessary from FlutterAppDelegate.mm. 25 | */ 26 | FLUTTER_EXPORT 27 | @interface FlutterAppDelegate 28 | : UIResponder 29 | 30 | @property(strong, nonatomic) UIWindow* window; 31 | 32 | @end 33 | 34 | #endif // FLUTTER_FLUTTERDARTPROJECT_H_ 35 | -------------------------------------------------------------------------------- /ios/Flutter/Flutter.framework/Headers/FlutterBinaryMessenger.h: -------------------------------------------------------------------------------- 1 | // Copyright 2013 The Flutter Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | #ifndef FLUTTER_FLUTTERBINARYMESSENGER_H_ 6 | #define FLUTTER_FLUTTERBINARYMESSENGER_H_ 7 | 8 | #import 9 | 10 | #include "FlutterMacros.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | /** 14 | * A message reply callback. 15 | * 16 | * Used for submitting a binary reply back to a Flutter message sender. Also used 17 | * in for handling a binary message reply received from Flutter. 18 | * 19 | * @param reply The reply. 20 | */ 21 | typedef void (^FlutterBinaryReply)(NSData* _Nullable reply); 22 | 23 | /** 24 | * A strategy for handling incoming binary messages from Flutter and to send 25 | * asynchronous replies back to Flutter. 26 | * 27 | * @param message The message. 28 | * @param reply A callback for submitting an asynchronous reply to the sender. 29 | */ 30 | typedef void (^FlutterBinaryMessageHandler)(NSData* _Nullable message, FlutterBinaryReply reply); 31 | 32 | /** 33 | * A facility for communicating with the Flutter side using asynchronous message 34 | * passing with binary messages. 35 | * 36 | * Implementated by: 37 | * - `FlutterBasicMessageChannel`, which supports communication using structured 38 | * messages. 39 | * - `FlutterMethodChannel`, which supports communication using asynchronous 40 | * method calls. 41 | * - `FlutterEventChannel`, which supports commuication using event streams. 42 | */ 43 | FLUTTER_EXPORT 44 | @protocol FlutterBinaryMessenger 45 | /** 46 | * Sends a binary message to the Flutter side on the specified channel, expecting 47 | * no reply. 48 | * 49 | * @param channel The channel name. 50 | * @param message The message. 51 | */ 52 | - (void)sendOnChannel:(NSString*)channel message:(NSData* _Nullable)message; 53 | 54 | /** 55 | * Sends a binary message to the Flutter side on the specified channel, expecting 56 | * an asynchronous reply. 57 | * 58 | * @param channel The channel name. 59 | * @param message The message. 60 | * @param callback A callback for receiving a reply. 61 | */ 62 | - (void)sendOnChannel:(NSString*)channel 63 | message:(NSData* _Nullable)message 64 | binaryReply:(FlutterBinaryReply _Nullable)callback 65 | // TODO: Add macOS support for replies once 66 | // https://github.com/flutter/flutter/issues/18852 is fixed. 67 | API_UNAVAILABLE(macos); 68 | 69 | /** 70 | * Registers a message handler for incoming binary messages from the Flutter side 71 | * on the specified channel. 72 | * 73 | * Replaces any existing handler. Use a `nil` handler for unregistering the 74 | * existing handler. 75 | * 76 | * @param channel The channel name. 77 | * @param handler The message handler. 78 | */ 79 | - (void)setMessageHandlerOnChannel:(NSString*)channel 80 | binaryMessageHandler:(FlutterBinaryMessageHandler _Nullable)handler; 81 | @end 82 | NS_ASSUME_NONNULL_END 83 | #endif // FLUTTER_FLUTTERBINARYMESSENGER_H_ 84 | -------------------------------------------------------------------------------- /ios/Flutter/Flutter.framework/Headers/FlutterCallbackCache.h: -------------------------------------------------------------------------------- 1 | // Copyright 2013 The Flutter Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | #ifndef FLUTTER_FLUTTERCALLBACKCACHE_H_ 6 | #define FLUTTER_FLUTTERCALLBACKCACHE_H_ 7 | 8 | #import 9 | 10 | #include "FlutterMacros.h" 11 | 12 | /** 13 | * An object containing the result of `FlutterCallbackCache`'s `lookupCallbackInformation` 14 | * method. 15 | */ 16 | FLUTTER_EXPORT 17 | @interface FlutterCallbackInformation : NSObject 18 | /** 19 | * The name of the callback. 20 | */ 21 | @property(retain) NSString* callbackName; 22 | /** 23 | * The class name of the callback. 24 | */ 25 | @property(retain) NSString* callbackClassName; 26 | /** 27 | * The library path of the callback. 28 | */ 29 | @property(retain) NSString* callbackLibraryPath; 30 | @end 31 | 32 | /** 33 | * The cache containing callback information for spawning a 34 | * `FlutterHeadlessDartRunner`. 35 | */ 36 | FLUTTER_EXPORT 37 | @interface FlutterCallbackCache : NSObject 38 | /** 39 | * Returns the callback information for the given callback handle. 40 | * This callback information can be used when spawning a 41 | * `FlutterHeadlessDartRunner`. 42 | * 43 | * @param handle The handle for a callback, provided by the 44 | * Dart method `PluginUtilities.getCallbackHandle`. 45 | * @return A `FlutterCallbackInformation` object which contains the name of the 46 | * callback, the name of the class in which the callback is defined, and the 47 | * path of the library which contains the callback. If the provided handle is 48 | * invalid, nil is returned. 49 | */ 50 | + (FlutterCallbackInformation*)lookupCallbackInformation:(int64_t)handle; 51 | 52 | @end 53 | 54 | #endif // FLUTTER_FLUTTERCALLBACKCACHE_H_ 55 | -------------------------------------------------------------------------------- /ios/Flutter/Flutter.framework/Headers/FlutterMacros.h: -------------------------------------------------------------------------------- 1 | // Copyright 2013 The Flutter Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | #ifndef FLUTTER_FLUTTERMACROS_H_ 6 | #define FLUTTER_FLUTTERMACROS_H_ 7 | 8 | #if defined(FLUTTER_FRAMEWORK) 9 | 10 | #define FLUTTER_EXPORT __attribute__((visibility("default"))) 11 | 12 | #else // defined(FLUTTER_SDK) 13 | 14 | #define FLUTTER_EXPORT 15 | 16 | #endif // defined(FLUTTER_SDK) 17 | 18 | #ifndef NS_ASSUME_NONNULL_BEGIN 19 | #define NS_ASSUME_NONNULL_BEGIN _Pragma("clang assume_nonnull begin") 20 | #define NS_ASSUME_NONNULL_END _Pragma("clang assume_nonnull end") 21 | #endif // defined(NS_ASSUME_NONNULL_BEGIN) 22 | 23 | /** 24 | * Indicates that the API has been deprecated for the specified reason. Code 25 | * that uses the deprecated API will continue to work as before. However, the 26 | * API will soon become unavailable and users are encouraged to immediately take 27 | * the appropriate action mentioned in the deprecation message and the BREAKING 28 | * CHANGES section present in the Flutter.h umbrella header. 29 | */ 30 | #define FLUTTER_DEPRECATED(msg) __attribute__((__deprecated__(msg))) 31 | 32 | /** 33 | * Indicates that the previously deprecated API is now unavailable. Code that 34 | * uses the API will not work and the declaration of the API is only a stub 35 | * meant to display the given message detailing the actions for the user to take 36 | * immediately. 37 | */ 38 | #define FLUTTER_UNAVAILABLE(msg) __attribute__((__unavailable__(msg))) 39 | 40 | #endif // FLUTTER_FLUTTERMACROS_H_ 41 | -------------------------------------------------------------------------------- /ios/Flutter/Flutter.framework/Headers/FlutterPlatformViews.h: -------------------------------------------------------------------------------- 1 | // Copyright 2013 The Flutter Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | #ifndef FLUTTER_FLUTTERPLATFORMVIEWS_H_ 6 | #define FLUTTER_FLUTTERPLATFORMVIEWS_H_ 7 | 8 | #import 9 | 10 | #import "FlutterCodecs.h" 11 | #import "FlutterMacros.h" 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | /** 16 | * Wraps a `UIView` for embedding in the Flutter hierarchy 17 | */ 18 | @protocol FlutterPlatformView 19 | /** 20 | * Returns a reference to the `UIView` that is wrapped by this `FlutterPlatformView`. 21 | */ 22 | - (UIView*)view; 23 | @end 24 | 25 | FLUTTER_EXPORT 26 | @protocol FlutterPlatformViewFactory 27 | /** 28 | * Create a `FlutterPlatformView`. 29 | * 30 | * Implemented by iOS code that expose a `UIView` for embedding in a Flutter app. 31 | * 32 | * The implementation of this method should create a new `UIView` and return it. 33 | * 34 | * @param frame The rectangle for the newly created `UIView` measued in points. 35 | * @param viewId A unique identifier for this `UIView`. 36 | * @param args Parameters for creating the `UIView` sent from the Dart side of the Flutter app. 37 | * If `createArgsCodec` is not implemented, or if no creation arguments were sent from the Dart 38 | * code, this will be null. Otherwise this will be the value sent from the Dart code as decoded by 39 | * `createArgsCodec`. 40 | */ 41 | - (NSObject*)createWithFrame:(CGRect)frame 42 | viewIdentifier:(int64_t)viewId 43 | arguments:(id _Nullable)args; 44 | 45 | /** 46 | * Returns the `FlutterMessageCodec` for decoding the args parameter of `createWithFrame`. 47 | * 48 | * Only needs to be implemented if `createWithFrame` needs an arguments parameter. 49 | */ 50 | @optional 51 | - (NSObject*)createArgsCodec; 52 | @end 53 | 54 | NS_ASSUME_NONNULL_END 55 | 56 | #endif // FLUTTER_FLUTTERPLATFORMVIEWS_H_ 57 | -------------------------------------------------------------------------------- /ios/Flutter/Flutter.framework/Headers/FlutterTexture.h: -------------------------------------------------------------------------------- 1 | // Copyright 2013 The Flutter Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | #ifndef FLUTTER_FLUTTERTEXTURE_H_ 6 | #define FLUTTER_FLUTTERTEXTURE_H_ 7 | 8 | #import 9 | #import 10 | 11 | #include "FlutterMacros.h" 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | FLUTTER_EXPORT 16 | @protocol FlutterTexture 17 | - (CVPixelBufferRef _Nullable)copyPixelBuffer; 18 | @end 19 | 20 | FLUTTER_EXPORT 21 | @protocol FlutterTextureRegistry 22 | - (int64_t)registerTexture:(NSObject*)texture; 23 | - (void)textureFrameAvailable:(int64_t)textureId; 24 | - (void)unregisterTexture:(int64_t)textureId; 25 | @end 26 | 27 | NS_ASSUME_NONNULL_END 28 | 29 | #endif // FLUTTER_FLUTTERTEXTURE_H_ 30 | -------------------------------------------------------------------------------- /ios/Flutter/Flutter.framework/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | Flutter 9 | CFBundleIdentifier 10 | io.flutter.flutter 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | Flutter 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/Flutter.framework/Modules/module.modulemap: -------------------------------------------------------------------------------- 1 | framework module Flutter { 2 | umbrella header "Flutter.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /ios/Flutter/Flutter.framework/icudtl.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Flutter/Flutter.framework/icudtl.dat -------------------------------------------------------------------------------- /ios/Flutter/Generated.xcconfig: -------------------------------------------------------------------------------- 1 | // This is a generated file; do not edit or check into version control. 2 | FLUTTER_ROOT=/Users/jiajie.wang/Documents/learn/flutter 3 | FLUTTER_APPLICATION_PATH=/Users/jiajie.wang/Documents/learn/flutter_tutorial 4 | FLUTTER_TARGET=/Users/jiajie.wang/Documents/learn/flutter_tutorial/lib/main.dart 5 | FLUTTER_BUILD_DIR=build 6 | SYMROOT=${SOURCE_ROOT}/../build/ios 7 | FLUTTER_FRAMEWORK_DIR=/Users/jiajie.wang/Documents/learn/flutter/bin/cache/artifacts/engine/ios 8 | FLUTTER_BUILD_NAME=1.0.0 9 | FLUTTER_BUILD_NUMBER=1 10 | TRACK_WIDGET_CREATION=true 11 | -------------------------------------------------------------------------------- /ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /ios/Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment this line to define a global platform for your project 2 | # platform :ios, '9.0' 3 | 4 | # CocoaPods analytics sends network stats synchronously affecting flutter build latency. 5 | ENV['COCOAPODS_DISABLE_STATS'] = 'true' 6 | 7 | project 'Runner', { 8 | 'Debug' => :debug, 9 | 'Profile' => :release, 10 | 'Release' => :release, 11 | } 12 | 13 | def parse_KV_file(file, separator='=') 14 | file_abs_path = File.expand_path(file) 15 | if !File.exists? file_abs_path 16 | return []; 17 | end 18 | pods_ary = [] 19 | skip_line_start_symbols = ["#", "/"] 20 | File.foreach(file_abs_path) { |line| 21 | next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ } 22 | plugin = line.split(pattern=separator) 23 | if plugin.length == 2 24 | podname = plugin[0].strip() 25 | path = plugin[1].strip() 26 | podpath = File.expand_path("#{path}", file_abs_path) 27 | pods_ary.push({:name => podname, :path => podpath}); 28 | else 29 | puts "Invalid plugin specification: #{line}" 30 | end 31 | } 32 | return pods_ary 33 | end 34 | 35 | target 'Runner' do 36 | # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock 37 | # referring to absolute paths on developers' machines. 38 | system('rm -rf .symlinks') 39 | system('mkdir -p .symlinks/plugins') 40 | 41 | # Flutter Pods 42 | generated_xcode_build_settings = parse_KV_file('./Flutter/Generated.xcconfig') 43 | if generated_xcode_build_settings.empty? 44 | puts "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter packages get is executed first." 45 | end 46 | generated_xcode_build_settings.map { |p| 47 | if p[:name] == 'FLUTTER_FRAMEWORK_DIR' 48 | symlink = File.join('.symlinks', 'flutter') 49 | File.symlink(File.dirname(p[:path]), symlink) 50 | pod 'Flutter', :path => File.join(symlink, File.basename(p[:path])) 51 | end 52 | } 53 | 54 | # Plugin Pods 55 | plugin_pods = parse_KV_file('../.flutter-plugins') 56 | plugin_pods.map { |p| 57 | symlink = File.join('.symlinks', 'plugins', p[:name]) 58 | File.symlink(p[:path], symlink) 59 | pod p[:name], :path => File.join(symlink, 'ios') 60 | } 61 | end 62 | 63 | post_install do |installer| 64 | installer.pods_project.targets.each do |target| 65 | target.build_configurations.each do |config| 66 | config.build_settings['ENABLE_BITCODE'] = 'NO' 67 | end 68 | end 69 | end 70 | -------------------------------------------------------------------------------- /ios/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - flustars (0.0.1): 3 | - Flutter 4 | - Flutter (1.0.0) 5 | - fluttertoast (0.0.2): 6 | - Flutter 7 | - shared_preferences (0.0.1): 8 | - Flutter 9 | 10 | DEPENDENCIES: 11 | - flustars (from `.symlinks/plugins/flustars/ios`) 12 | - Flutter (from `.symlinks/flutter/ios`) 13 | - fluttertoast (from `.symlinks/plugins/fluttertoast/ios`) 14 | - shared_preferences (from `.symlinks/plugins/shared_preferences/ios`) 15 | 16 | EXTERNAL SOURCES: 17 | flustars: 18 | :path: ".symlinks/plugins/flustars/ios" 19 | Flutter: 20 | :path: ".symlinks/flutter/ios" 21 | fluttertoast: 22 | :path: ".symlinks/plugins/fluttertoast/ios" 23 | shared_preferences: 24 | :path: ".symlinks/plugins/shared_preferences/ios" 25 | 26 | SPEC CHECKSUMS: 27 | flustars: 0e81b1510ccac786ec044db1565e499b83e65da1 28 | Flutter: 9d0fac939486c9aba2809b7982dfdbb47a7b0296 29 | fluttertoast: 0a20dcbbb8ecfd1a61b6285651ff2d5989d033fb 30 | shared_preferences: 5a1d487c427ee18fcd3ea1f2a131569481834b53 31 | 32 | PODFILE CHECKSUM: aff02bfeed411c636180d6812254b2daeea14d09 33 | 34 | COCOAPODS: 1.5.3 35 | -------------------------------------------------------------------------------- /ios/Pods/Headers/Private/flustars/FlustarsPlugin.h: -------------------------------------------------------------------------------- 1 | ../../../../.symlinks/plugins/flustars/ios/Classes/FlustarsPlugin.h -------------------------------------------------------------------------------- /ios/Pods/Headers/Private/fluttertoast/FluttertoastPlugin.h: -------------------------------------------------------------------------------- 1 | ../../../../.symlinks/plugins/fluttertoast/ios/Classes/FluttertoastPlugin.h -------------------------------------------------------------------------------- /ios/Pods/Headers/Private/fluttertoast/UIView+Toast.h: -------------------------------------------------------------------------------- 1 | ../../../../.symlinks/plugins/fluttertoast/ios/Classes/UIView+Toast.h -------------------------------------------------------------------------------- /ios/Pods/Headers/Private/shared_preferences/SharedPreferencesPlugin.h: -------------------------------------------------------------------------------- 1 | ../../../../.symlinks/plugins/shared_preferences/ios/Classes/SharedPreferencesPlugin.h -------------------------------------------------------------------------------- /ios/Pods/Headers/Public/Flutter/Flutter/Flutter.h: -------------------------------------------------------------------------------- 1 | ../../../../../../../flutter/bin/cache/artifacts/engine/ios/Flutter.framework/Headers/Flutter.h -------------------------------------------------------------------------------- /ios/Pods/Headers/Public/Flutter/Flutter/FlutterAppDelegate.h: -------------------------------------------------------------------------------- 1 | ../../../../../../../flutter/bin/cache/artifacts/engine/ios/Flutter.framework/Headers/FlutterAppDelegate.h -------------------------------------------------------------------------------- /ios/Pods/Headers/Public/Flutter/Flutter/FlutterBinaryMessenger.h: -------------------------------------------------------------------------------- 1 | ../../../../../../../flutter/bin/cache/artifacts/engine/ios/Flutter.framework/Headers/FlutterBinaryMessenger.h -------------------------------------------------------------------------------- /ios/Pods/Headers/Public/Flutter/Flutter/FlutterCallbackCache.h: -------------------------------------------------------------------------------- 1 | ../../../../../../../flutter/bin/cache/artifacts/engine/ios/Flutter.framework/Headers/FlutterCallbackCache.h -------------------------------------------------------------------------------- /ios/Pods/Headers/Public/Flutter/Flutter/FlutterChannels.h: -------------------------------------------------------------------------------- 1 | ../../../../../../../flutter/bin/cache/artifacts/engine/ios/Flutter.framework/Headers/FlutterChannels.h -------------------------------------------------------------------------------- /ios/Pods/Headers/Public/Flutter/Flutter/FlutterCodecs.h: -------------------------------------------------------------------------------- 1 | ../../../../../../../flutter/bin/cache/artifacts/engine/ios/Flutter.framework/Headers/FlutterCodecs.h -------------------------------------------------------------------------------- /ios/Pods/Headers/Public/Flutter/Flutter/FlutterDartProject.h: -------------------------------------------------------------------------------- 1 | ../../../../../../../flutter/bin/cache/artifacts/engine/ios/Flutter.framework/Headers/FlutterDartProject.h -------------------------------------------------------------------------------- /ios/Pods/Headers/Public/Flutter/Flutter/FlutterEngine.h: -------------------------------------------------------------------------------- 1 | ../../../../../../../flutter/bin/cache/artifacts/engine/ios/Flutter.framework/Headers/FlutterEngine.h -------------------------------------------------------------------------------- /ios/Pods/Headers/Public/Flutter/Flutter/FlutterHeadlessDartRunner.h: -------------------------------------------------------------------------------- 1 | ../../../../../../../flutter/bin/cache/artifacts/engine/ios/Flutter.framework/Headers/FlutterHeadlessDartRunner.h -------------------------------------------------------------------------------- /ios/Pods/Headers/Public/Flutter/Flutter/FlutterMacros.h: -------------------------------------------------------------------------------- 1 | ../../../../../../../flutter/bin/cache/artifacts/engine/ios/Flutter.framework/Headers/FlutterMacros.h -------------------------------------------------------------------------------- /ios/Pods/Headers/Public/Flutter/Flutter/FlutterPlatformViews.h: -------------------------------------------------------------------------------- 1 | ../../../../../../../flutter/bin/cache/artifacts/engine/ios/Flutter.framework/Headers/FlutterPlatformViews.h -------------------------------------------------------------------------------- /ios/Pods/Headers/Public/Flutter/Flutter/FlutterPlugin.h: -------------------------------------------------------------------------------- 1 | ../../../../../../../flutter/bin/cache/artifacts/engine/ios/Flutter.framework/Headers/FlutterPlugin.h -------------------------------------------------------------------------------- /ios/Pods/Headers/Public/Flutter/Flutter/FlutterPluginAppLifeCycleDelegate.h: -------------------------------------------------------------------------------- 1 | ../../../../../../../flutter/bin/cache/artifacts/engine/ios/Flutter.framework/Headers/FlutterPluginAppLifeCycleDelegate.h -------------------------------------------------------------------------------- /ios/Pods/Headers/Public/Flutter/Flutter/FlutterTexture.h: -------------------------------------------------------------------------------- 1 | ../../../../../../../flutter/bin/cache/artifacts/engine/ios/Flutter.framework/Headers/FlutterTexture.h -------------------------------------------------------------------------------- /ios/Pods/Headers/Public/Flutter/Flutter/FlutterViewController.h: -------------------------------------------------------------------------------- 1 | ../../../../../../../flutter/bin/cache/artifacts/engine/ios/Flutter.framework/Headers/FlutterViewController.h -------------------------------------------------------------------------------- /ios/Pods/Headers/Public/flustars/FlustarsPlugin.h: -------------------------------------------------------------------------------- 1 | ../../../../.symlinks/plugins/flustars/ios/Classes/FlustarsPlugin.h -------------------------------------------------------------------------------- /ios/Pods/Headers/Public/fluttertoast/FluttertoastPlugin.h: -------------------------------------------------------------------------------- 1 | ../../../../.symlinks/plugins/fluttertoast/ios/Classes/FluttertoastPlugin.h -------------------------------------------------------------------------------- /ios/Pods/Headers/Public/fluttertoast/UIView+Toast.h: -------------------------------------------------------------------------------- 1 | ../../../../.symlinks/plugins/fluttertoast/ios/Classes/UIView+Toast.h -------------------------------------------------------------------------------- /ios/Pods/Headers/Public/shared_preferences/SharedPreferencesPlugin.h: -------------------------------------------------------------------------------- 1 | ../../../../.symlinks/plugins/shared_preferences/ios/Classes/SharedPreferencesPlugin.h -------------------------------------------------------------------------------- /ios/Pods/Local Podspecs/Flutter.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Flutter", 3 | "version": "1.0.0", 4 | "summary": "High-performance, high-fidelity mobile apps.", 5 | "description": "Flutter provides an easy and productive way to build and deploy high-performance mobile apps for Android and iOS.", 6 | "homepage": "https://flutter.io", 7 | "license": { 8 | "type": "MIT" 9 | }, 10 | "authors": { 11 | "Flutter Dev Team": "flutter-dev@googlegroups.com" 12 | }, 13 | "source": { 14 | "git": "https://github.com/flutter/engine", 15 | "tag": "1.0.0" 16 | }, 17 | "platforms": { 18 | "ios": "7.0" 19 | }, 20 | "vendored_frameworks": "Flutter.framework" 21 | } 22 | -------------------------------------------------------------------------------- /ios/Pods/Local Podspecs/flustars.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "flustars", 3 | "version": "0.0.1", 4 | "summary": "A new Flutter plugin.", 5 | "description": "A new Flutter plugin.", 6 | "homepage": "http://example.com", 7 | "license": { 8 | "file": "../LICENSE" 9 | }, 10 | "authors": { 11 | "Your Company": "email@example.com" 12 | }, 13 | "source": { 14 | "path": "." 15 | }, 16 | "source_files": "Classes/**/*", 17 | "public_header_files": "Classes/**/*.h", 18 | "dependencies": { 19 | "Flutter": [ 20 | 21 | ] 22 | }, 23 | "platforms": { 24 | "ios": "8.0" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /ios/Pods/Local Podspecs/fluttertoast.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "fluttertoast", 3 | "version": "0.0.2", 4 | "summary": "Toast Library for Flutter", 5 | "description": "Toast Library for FLutter", 6 | "homepage": "http://example.com", 7 | "license": { 8 | "file": "../LICENSE" 9 | }, 10 | "authors": { 11 | "Karthik Ponnam": "ponnamkarthik3@gmail.com" 12 | }, 13 | "source": { 14 | "path": "." 15 | }, 16 | "source_files": "Classes/**/*", 17 | "public_header_files": "Classes/**/*.h", 18 | "dependencies": { 19 | "Flutter": [ 20 | 21 | ] 22 | }, 23 | "platforms": { 24 | "ios": "8.0" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /ios/Pods/Local Podspecs/shared_preferences.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "shared_preferences", 3 | "version": "0.0.1", 4 | "summary": "A Flutter plugin for reading and writing simple key-value pairs.", 5 | "description": "A Flutter plugin for reading and writing simple key-value pairs.", 6 | "homepage": "https://github.com/flutter/plugins/tree/master/packages/shared_preferences", 7 | "license": { 8 | "file": "../LICENSE" 9 | }, 10 | "authors": { 11 | "Flutter Team": "flutter-dev@googlegroups.com" 12 | }, 13 | "source": { 14 | "path": "." 15 | }, 16 | "source_files": "Classes/**/*", 17 | "public_header_files": "Classes/**/*.h", 18 | "dependencies": { 19 | "Flutter": [ 20 | 21 | ] 22 | }, 23 | "platforms": { 24 | "ios": "8.0" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /ios/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - flustars (0.0.1): 3 | - Flutter 4 | - Flutter (1.0.0) 5 | - fluttertoast (0.0.2): 6 | - Flutter 7 | - shared_preferences (0.0.1): 8 | - Flutter 9 | 10 | DEPENDENCIES: 11 | - flustars (from `.symlinks/plugins/flustars/ios`) 12 | - Flutter (from `.symlinks/flutter/ios`) 13 | - fluttertoast (from `.symlinks/plugins/fluttertoast/ios`) 14 | - shared_preferences (from `.symlinks/plugins/shared_preferences/ios`) 15 | 16 | EXTERNAL SOURCES: 17 | flustars: 18 | :path: ".symlinks/plugins/flustars/ios" 19 | Flutter: 20 | :path: ".symlinks/flutter/ios" 21 | fluttertoast: 22 | :path: ".symlinks/plugins/fluttertoast/ios" 23 | shared_preferences: 24 | :path: ".symlinks/plugins/shared_preferences/ios" 25 | 26 | SPEC CHECKSUMS: 27 | flustars: 0e81b1510ccac786ec044db1565e499b83e65da1 28 | Flutter: 9d0fac939486c9aba2809b7982dfdbb47a7b0296 29 | fluttertoast: 0a20dcbbb8ecfd1a61b6285651ff2d5989d033fb 30 | shared_preferences: 5a1d487c427ee18fcd3ea1f2a131569481834b53 31 | 32 | PODFILE CHECKSUM: aff02bfeed411c636180d6812254b2daeea14d09 33 | 34 | COCOAPODS: 1.5.3 35 | -------------------------------------------------------------------------------- /ios/Pods/Pods.xcodeproj/xcuserdata/jiajie.wang.xcuserdatad/xcschemes/Pods-Runner.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 45 | 46 | 52 | 53 | 55 | 56 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /ios/Pods/Pods.xcodeproj/xcuserdata/jiajie.wang.xcuserdatad/xcschemes/flustars.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 45 | 46 | 52 | 53 | 55 | 56 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /ios/Pods/Pods.xcodeproj/xcuserdata/jiajie.wang.xcuserdatad/xcschemes/fluttertoast.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 45 | 46 | 52 | 53 | 55 | 56 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /ios/Pods/Pods.xcodeproj/xcuserdata/jiajie.wang.xcuserdatad/xcschemes/shared_preferences.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 45 | 46 | 52 | 53 | 55 | 56 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /ios/Pods/Pods.xcodeproj/xcuserdata/jiajie.wang.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Pods-Runner.xcscheme 8 | 9 | isShown 10 | 11 | 12 | flustars.xcscheme 13 | 14 | isShown 15 | 16 | 17 | fluttertoast.xcscheme 18 | 19 | isShown 20 | 21 | 22 | shared_preferences.xcscheme 23 | 24 | isShown 25 | 26 | 27 | 28 | SuppressBuildableAutocreation 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /ios/Pods/Target Support Files/Pods-Runner/Pods-Runner-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_Runner : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_Runner 5 | @end 6 | -------------------------------------------------------------------------------- /ios/Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/../.symlinks/flutter/ios" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Flutter" "${PODS_ROOT}/Headers/Public/flustars" "${PODS_ROOT}/Headers/Public/fluttertoast" "${PODS_ROOT}/Headers/Public/shared_preferences" 4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 5 | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/flustars" "${PODS_CONFIGURATION_BUILD_DIR}/fluttertoast" "${PODS_CONFIGURATION_BUILD_DIR}/shared_preferences" 6 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Flutter" -isystem "${PODS_ROOT}/Headers/Public/flustars" -isystem "${PODS_ROOT}/Headers/Public/fluttertoast" -isystem "${PODS_ROOT}/Headers/Public/shared_preferences" 7 | OTHER_LDFLAGS = $(inherited) -ObjC -l"flustars" -l"fluttertoast" -l"shared_preferences" -framework "Flutter" 8 | PODS_BUILD_DIR = ${BUILD_DIR} 9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /ios/Pods/Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/../.symlinks/flutter/ios" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Flutter" "${PODS_ROOT}/Headers/Public/flustars" "${PODS_ROOT}/Headers/Public/fluttertoast" "${PODS_ROOT}/Headers/Public/shared_preferences" 4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 5 | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/flustars" "${PODS_CONFIGURATION_BUILD_DIR}/fluttertoast" "${PODS_CONFIGURATION_BUILD_DIR}/shared_preferences" 6 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Flutter" -isystem "${PODS_ROOT}/Headers/Public/flustars" -isystem "${PODS_ROOT}/Headers/Public/fluttertoast" -isystem "${PODS_ROOT}/Headers/Public/shared_preferences" 7 | OTHER_LDFLAGS = $(inherited) -ObjC -l"flustars" -l"fluttertoast" -l"shared_preferences" -framework "Flutter" 8 | PODS_BUILD_DIR = ${BUILD_DIR} 9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /ios/Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/../.symlinks/flutter/ios" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Flutter" "${PODS_ROOT}/Headers/Public/flustars" "${PODS_ROOT}/Headers/Public/fluttertoast" "${PODS_ROOT}/Headers/Public/shared_preferences" 4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 5 | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/flustars" "${PODS_CONFIGURATION_BUILD_DIR}/fluttertoast" "${PODS_CONFIGURATION_BUILD_DIR}/shared_preferences" 6 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Flutter" -isystem "${PODS_ROOT}/Headers/Public/flustars" -isystem "${PODS_ROOT}/Headers/Public/fluttertoast" -isystem "${PODS_ROOT}/Headers/Public/shared_preferences" 7 | OTHER_LDFLAGS = $(inherited) -ObjC -l"flustars" -l"fluttertoast" -l"shared_preferences" -framework "Flutter" 8 | PODS_BUILD_DIR = ${BUILD_DIR} 9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /ios/Pods/Target Support Files/flustars/flustars-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_flustars : NSObject 3 | @end 4 | @implementation PodsDummy_flustars 5 | @end 6 | -------------------------------------------------------------------------------- /ios/Pods/Target Support Files/flustars/flustars-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /ios/Pods/Target Support Files/flustars/flustars.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/flustars 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/../.symlinks/flutter/ios" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/flustars" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Flutter" "${PODS_ROOT}/Headers/Public/flustars" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.symlinks/plugins/flustars/ios 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /ios/Pods/Target Support Files/fluttertoast/fluttertoast-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_fluttertoast : NSObject 3 | @end 4 | @implementation PodsDummy_fluttertoast 5 | @end 6 | -------------------------------------------------------------------------------- /ios/Pods/Target Support Files/fluttertoast/fluttertoast-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /ios/Pods/Target Support Files/fluttertoast/fluttertoast.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/fluttertoast 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/../.symlinks/flutter/ios" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/fluttertoast" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Flutter" "${PODS_ROOT}/Headers/Public/fluttertoast" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.symlinks/plugins/fluttertoast/ios 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /ios/Pods/Target Support Files/shared_preferences/shared_preferences-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_shared_preferences : NSObject 3 | @end 4 | @implementation PodsDummy_shared_preferences 5 | @end 6 | -------------------------------------------------------------------------------- /ios/Pods/Target Support Files/shared_preferences/shared_preferences-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /ios/Pods/Target Support Files/shared_preferences/shared_preferences.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/shared_preferences 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/../.symlinks/flutter/ios" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/shared_preferences" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Flutter" "${PODS_ROOT}/Headers/Public/shared_preferences" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.symlinks/plugins/shared_preferences/ios 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /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/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildSystemType 6 | Original 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/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/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/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/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/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/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/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/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/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/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/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/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/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/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/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/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/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/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/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/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/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/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/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/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/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/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/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/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/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/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/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ddwhan0123/flutter_tutorial/c8ef34cb06ed7a069f80c0e6744195e13b1efaf8/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/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /ios/Runner/GeneratedPluginRegistrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | #ifndef GeneratedPluginRegistrant_h 6 | #define GeneratedPluginRegistrant_h 7 | 8 | #import 9 | 10 | @interface GeneratedPluginRegistrant : NSObject 11 | + (void)registerWithRegistry:(NSObject*)registry; 12 | @end 13 | 14 | #endif /* GeneratedPluginRegistrant_h */ 15 | -------------------------------------------------------------------------------- /ios/Runner/GeneratedPluginRegistrant.m: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | #import "GeneratedPluginRegistrant.h" 6 | #import 7 | #import 8 | #import 9 | 10 | @implementation GeneratedPluginRegistrant 11 | 12 | + (void)registerWithRegistry:(NSObject*)registry { 13 | [FlustarsPlugin registerWithRegistrar:[registry registrarForPlugin:@"FlustarsPlugin"]]; 14 | [FluttertoastPlugin registerWithRegistrar:[registry registrarForPlugin:@"FluttertoastPlugin"]]; 15 | [FLTSharedPreferencesPlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTSharedPreferencesPlugin"]]; 16 | } 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /ios/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | flutter_sample 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | $(FLUTTER_BUILD_NAME) 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(FLUTTER_BUILD_NUMBER) 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UISupportedInterfaceOrientations 30 | 31 | UIInterfaceOrientationPortrait 32 | UIInterfaceOrientationLandscapeLeft 33 | UIInterfaceOrientationLandscapeRight 34 | 35 | UISupportedInterfaceOrientations~ipad 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationPortraitUpsideDown 39 | UIInterfaceOrientationLandscapeLeft 40 | UIInterfaceOrientationLandscapeRight 41 | 42 | UIViewControllerBasedStatusBarAppearance 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /ios/ServiceDefinitions.json: -------------------------------------------------------------------------------- 1 | {"services":[]} -------------------------------------------------------------------------------- /lib/base/base_imp.dart: -------------------------------------------------------------------------------- 1 | 2 | import 'package:flutter_sample/utils/data_service/track_service.dart'; 3 | 4 | class BaseMethodImp { 5 | // 工厂模式 6 | factory BaseMethodImp() => _getInstance(); 7 | static BaseMethodImp get instance => _getInstance(); 8 | static BaseMethodImp _instance; 9 | BaseMethodImp._internal() { 10 | // 初始化 11 | } 12 | static BaseMethodImp _getInstance() { 13 | if (_instance == null) { 14 | _instance = new BaseMethodImp._internal(); 15 | } 16 | return _instance; 17 | } 18 | 19 | trackPageBegin({String eventID, Map data}) { 20 | if (null != eventID && eventID.isNotEmpty) { 21 | TrackService.trackBeginEvent(eventID: eventID, data: data); 22 | } 23 | } 24 | 25 | trackPageEnd({String eventID, Map data}) { 26 | if (null != eventID && eventID.isNotEmpty) { 27 | TrackService.trackEndEvent(eventID: eventID, data: data); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /lib/base/page/base_stateful_page.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/base/base_imp.dart'; 3 | import 'package:flutter_sample/utils/toast_utils.dart'; 4 | import 'package:fluttertoast/fluttertoast.dart'; 5 | 6 | abstract class BaseStatefulPage extends StatefulWidget { 7 | const BaseStatefulPage({ Key key }) : super(key: key); 8 | } 9 | 10 | /* 11 | * 12 | * State的抽象类父类,实现生命周期回调 13 | */ 14 | abstract class BasePageState extends State 15 | with WidgetsBindingObserver { 16 | //给子类实现的页面开始方法 17 | @protected 18 | String trackPageBeginMethod(); 19 | //给子类实现的页面结束方法 20 | @protected 21 | String trackPageEndMethod(); 22 | 23 | //子类可自行调用的埋点方法 24 | trackPageBegin({String eventID, Map data}) { 25 | BaseMethodImp.instance.trackPageBegin(eventID: eventID, data: data); 26 | } 27 | 28 | trackPageEnd({String eventID, Map data}) { 29 | BaseMethodImp.instance.trackPageEnd(eventID: eventID, data: data); 30 | } 31 | 32 | //实现Toast工具方法 33 | showToast(String msg, 34 | {Colors backgroundColor, 35 | double fontSize, 36 | Colors textColor, 37 | ToastGravity location, 38 | Toast toastLength}) { 39 | ToastUtils.show(msg, 40 | backgroundColor: backgroundColor, 41 | fontSize: fontSize, 42 | textColor: textColor, 43 | location: location, 44 | toastLength: toastLength); 45 | } 46 | 47 | //initState调用后触发,也可在initState方法里实现trackPageBegin 48 | @override 49 | void didChangeDependencies() { 50 | String eventId = trackPageBeginMethod(); 51 | trackPageBegin(eventID: eventId); 52 | super.didChangeDependencies(); 53 | } 54 | 55 | @override 56 | void initState() { 57 | super.initState(); 58 | WidgetsBinding.instance.addObserver(this); 59 | } 60 | 61 | //控件彻底回收前触发,也可在deactive方法里实现trackPageEnd 62 | @override 63 | void dispose() { 64 | String eventId = trackPageEndMethod(); 65 | trackPageEnd(eventID: eventId); 66 | WidgetsBinding.instance.removeObserver(this); 67 | super.dispose(); 68 | } 69 | 70 | //退出应用所出发的生命周期方法,demo阶段暂不实现具体逻辑 71 | @override 72 | void didChangeAppLifecycleState(AppLifecycleState state) { 73 | switch (state) { 74 | case AppLifecycleState.inactive: 75 | break; 76 | case AppLifecycleState.paused: 77 | 78 | break; 79 | case AppLifecycleState.resumed: 80 | 81 | break; 82 | case AppLifecycleState.suspending: 83 | break; 84 | } 85 | 86 | super.didChangeAppLifecycleState(state); 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /lib/base/page/base_stateless_page.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/base/widget/base_stateless_widget.dart'; 3 | 4 | abstract class NioBaseStatelessPage extends BaseStatelessWidget 5 | with WidgetsBindingObserver { 6 | @protected 7 | String trackPageBeginMethod(); 8 | 9 | @protected 10 | String trackPageEndMethod(); 11 | 12 | 13 | @override 14 | void didChangeAppLifecycleState(AppLifecycleState state) { 15 | switch (state) { 16 | case AppLifecycleState.inactive: 17 | break; 18 | case AppLifecycleState.paused: 19 | break; 20 | case AppLifecycleState.resumed: 21 | break; 22 | case AppLifecycleState.suspending: 23 | break; 24 | } 25 | 26 | super.didChangeAppLifecycleState(state); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /lib/base/widget/base_stateful_widget.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/base/base_imp.dart'; 3 | import 'package:flutter_sample/utils/toast_utils.dart'; 4 | import 'package:fluttertoast/fluttertoast.dart'; 5 | 6 | 7 | abstract class BaseStatefullWidget extends StatefulWidget { 8 | const BaseStatefullWidget({ Key key }) : super(key: key); 9 | trackPageBegin({String eventID, Map data}) { 10 | BaseMethodImp.instance.trackPageBegin(eventID: eventID, data: data); 11 | } 12 | 13 | trackPageEnd({String eventID, Map data}) { 14 | BaseMethodImp.instance.trackPageEnd(eventID: eventID, data: data); 15 | } 16 | } 17 | 18 | //实现Toast工具方法 19 | showToast(String msg, 20 | {Colors backgroundColor, 21 | double fontSize, 22 | Colors textColor, 23 | ToastGravity location, 24 | Toast toastLength}) { 25 | ToastUtils.show(msg, 26 | backgroundColor: backgroundColor, 27 | fontSize: fontSize, 28 | textColor: textColor, 29 | location: location, 30 | toastLength: toastLength); 31 | } 32 | 33 | abstract class BaseState extends State { 34 | 35 | trackPageBegin({String eventID, Map data}) { 36 | BaseMethodImp.instance.trackPageBegin(eventID: eventID, data: data); 37 | } 38 | 39 | trackPageEnd({String eventID, Map data}) { 40 | BaseMethodImp.instance.trackPageEnd(eventID: eventID, data: data); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /lib/base/widget/base_stateless_widget.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/base/base_imp.dart'; 3 | import 'package:flutter_sample/utils/toast_utils.dart'; 4 | import 'package:fluttertoast/fluttertoast.dart'; 5 | 6 | abstract class BaseStatelessWidget extends StatelessWidget { 7 | const BaseStatelessWidget({ Key key }) : super(key: key); 8 | /* 9 | *页面开始方法 10 | *@params eventID 页面ID 11 | *@params data 数据map 12 | * */ 13 | trackPageBegin({String eventID, Map data}) { 14 | BaseMethodImp.instance.trackPageBegin(eventID: eventID, data: data); 15 | } 16 | 17 | /* 18 | *页面结束埋点方法 19 | *@params eventID 页面ID 20 | *@params data 数据map 21 | * */ 22 | trackPageEnd({String eventID, Map data}) { 23 | BaseMethodImp.instance.trackPageEnd(eventID: eventID, data: data); 24 | } 25 | 26 | //实现Toast工具方法 27 | showToast(String msg, 28 | {Colors backgroundColor, 29 | double fontSize, 30 | Colors textColor, 31 | ToastGravity location, 32 | Toast toastLength}) { 33 | ToastUtils.show(msg, 34 | backgroundColor: backgroundColor, 35 | fontSize: fontSize, 36 | textColor: textColor, 37 | location: location, 38 | toastLength: toastLength); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /lib/bean/home/main/item_type_three.dart: -------------------------------------------------------------------------------- 1 | class HomeTypeThreeBean { 2 | String momentCreateTime; //文章创建时间 3 | String momentReadingVolume; //文章阅读量 4 | String monentCommentCount; //评论总量 5 | String userHeaderImg; //头像地址 6 | String username; //用户名 7 | String momentTitleString; //文章创建时间 8 | int userIdentity; //用户类型 9 | List photoWall; //图片墙 10 | String tipsString;//主题色样式的热点文字 11 | 12 | HomeTypeThreeBean( 13 | {this.momentCreateTime, 14 | this.momentReadingVolume, 15 | this.monentCommentCount, 16 | this.userHeaderImg, 17 | this.userIdentity, 18 | this.momentTitleString, 19 | this.username, 20 | this.photoWall, 21 | this.tipsString}); 22 | } 23 | -------------------------------------------------------------------------------- /lib/bean/home/me/user_info.dart: -------------------------------------------------------------------------------- 1 | class UserInfo { 2 | String userName; //用户名 3 | String userType; //用户认证类型 4 | String userScore; //用户积分 5 | String signNumeber; //签到天数 6 | String userHeaderImg; //用户头像地址 7 | 8 | UserInfo( 9 | {this.userName, 10 | this.userType, 11 | this.userScore, 12 | this.signNumeber, 13 | this.userHeaderImg}); 14 | } 15 | -------------------------------------------------------------------------------- /lib/component/item_component_type_one/item_title.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/base/widget/base_stateless_widget.dart'; 3 | import 'package:flutter_sample/utils/screen_util.dart'; 4 | import '../../style/style.dart' as styles; 5 | 6 | class ItemTitleView extends BaseStatelessWidget { 7 | final String userHeaderImg; //头像地址 8 | final String username; //用户名 9 | final int userIdentity; //用户类型标示 10 | ItemTitleView(this.userHeaderImg, this.username, this.userIdentity); 11 | 12 | /* 13 | *根据构造函数userIdentity的值决定是否渲染Image 14 | */ 15 | _visibilityLogic(Widget child) { 16 | if (this.userIdentity == 0) { 17 | return new IgnorePointer( 18 | ignoring: true, 19 | child: new Opacity( 20 | opacity: 0.0, 21 | child: child 22 | ) 23 | ); 24 | } else if (userIdentity == 1) { 25 | return child; 26 | } else { 27 | //todo 其他场景还没设计 28 | } 29 | } 30 | 31 | @override 32 | Widget build(BuildContext context) { 33 | ScreenUtil.instance = ScreenUtil(width: 750, height: 1334)..init(context); 34 | var screenInstance = ScreenUtil.getInstance(); 35 | return Padding( 36 | padding: EdgeInsets.only(top: screenInstance.setHeight(20)), 37 | child: Row( 38 | crossAxisAlignment: CrossAxisAlignment.center, 39 | children: [ 40 | new Container( 41 | width: screenInstance.setWidth(76), 42 | height: screenInstance.setHeight(72), 43 | decoration: new BoxDecoration( 44 | shape: BoxShape.circle, 45 | image: new DecorationImage( 46 | fit: BoxFit.fill, 47 | image: new NetworkImage(this.userHeaderImg)))), 48 | new Padding( 49 | padding: EdgeInsets.only(left: screenInstance.setWidth(14)), 50 | child: new Text( 51 | username, 52 | textAlign: TextAlign.left, 53 | style: new TextStyle( 54 | color: styles.ComponentStyle.TITLE_TEXT_COLOR, 55 | fontSize: screenInstance.setSp(34)), 56 | ), 57 | ), 58 | _visibilityLogic(_renderIconImg(screenInstance)) 59 | ], 60 | )); 61 | } 62 | 63 | /* 64 | 渲染右侧Icon 65 | */ 66 | Widget _renderIconImg(ScreenUtil screenInstance) { 67 | return new Container( 68 | margin: EdgeInsets.fromLTRB(screenInstance.setWidth(14), 0, 0, 0), 69 | width: screenInstance.setWidth(60), 70 | height: screenInstance.setHeight(30), 71 | decoration: new BoxDecoration( 72 | image: new DecorationImage( 73 | image: new AssetImage("assets/images/user_tips_img.jpg"), 74 | fit: BoxFit.cover, 75 | ), 76 | borderRadius: new BorderRadius.all(new Radius.circular(10.0)), 77 | border: new Border.all( 78 | color: Colors.black, 79 | width: 1.0, 80 | ), 81 | ), 82 | ); 83 | } 84 | } -------------------------------------------------------------------------------- /lib/component/item_component_type_three/item_three_root_layout.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/base/widget/base_stateless_widget.dart'; 3 | import 'package:flutter_sample/bean/home/main/item_type_three.dart'; 4 | import 'package:flutter_sample/component/item_component_type_one/item_foot.dart'; 5 | import 'package:flutter_sample/component/item_component_type_one/item_title.dart'; 6 | import 'package:flutter_sample/component/item_component_type_three/item_three_center.dart'; 7 | import 'package:flutter_sample/component/widget/common/dividing_line.dart'; 8 | 9 | /* 10 | * 上文字,下4公格 11 | **/ 12 | class ItemRootTypeThree extends BaseStatelessWidget { 13 | final HomeTypeThreeBean homeTypeThreeBean; 14 | 15 | ItemRootTypeThree(this.homeTypeThreeBean); 16 | @override 17 | Widget build(BuildContext context) { 18 | return new Column( 19 | children: [ 20 | Padding( 21 | child: Column( 22 | children: [ 23 | renderHeader(), 24 | new ItemCenterTypeThree(homeTypeThreeBean.momentTitleString, 25 | homeTypeThreeBean.tipsString, () { 26 | showToast('点击话题'); 27 | }, homeTypeThreeBean.photoWall), 28 | renderFoot() 29 | ], 30 | ), 31 | padding: const EdgeInsets.symmetric(horizontal: 25.0), 32 | ), 33 | new Container( 34 | padding: EdgeInsets.symmetric(horizontal: 25.0), 35 | child: new DividingLine(),) 36 | ], 37 | ); 38 | } 39 | 40 | renderHeader() { 41 | return new ItemTitleView(homeTypeThreeBean.userHeaderImg, 42 | homeTypeThreeBean.username, homeTypeThreeBean.userIdentity); 43 | } 44 | 45 | renderCenter() {} 46 | 47 | //底部同类型1的底部 48 | renderFoot() { 49 | List data = new List(); 50 | Map map1 = new Map(); 51 | map1['resPath'] = 52 | "assets/images/details_page_reading_quantity_iconxxhdpi.png"; 53 | map1['value'] = homeTypeThreeBean.momentReadingVolume + '万'; 54 | data.add(map1); 55 | Map map2 = new Map(); 56 | map2['resPath'] = "assets/images/comment.png"; 57 | map2['value'] = homeTypeThreeBean.monentCommentCount; 58 | data.add(map2); 59 | return new ItemFootView(data); 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /lib/component/item_component_type_two/item_title.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/base/widget/base_stateless_widget.dart'; 3 | import 'package:flutter_sample/utils/screen_util.dart'; 4 | import '../../style/style.dart' as styles; 5 | 6 | class ItemTitleTypeTwo extends BaseStatelessWidget { 7 | final titleText; //标题文字 8 | final Function onTitleClick; 9 | ItemTitleTypeTwo(this.titleText, this.onTitleClick, {Key key}) 10 | : super(key: key); 11 | 12 | @override 13 | Widget build(BuildContext context) { 14 | ScreenUtil.instance = ScreenUtil(width: 750, height: 1334)..init(context); 15 | var _screenInstance = ScreenUtil.getInstance(); 16 | var ges = new GestureDetector( 17 | onTap: () { 18 | if (null != onTitleClick) { 19 | onTitleClick(); 20 | } 21 | }, 22 | child: new Container( 23 | margin: EdgeInsets.only( 24 | top: _screenInstance.setHeight(24), 25 | bottom: _screenInstance.setHeight(24)), 26 | child: new Row( 27 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 28 | children: [renderLeft(_screenInstance), renderRight()], 29 | ), 30 | ), 31 | ); 32 | return ges; 33 | } 34 | 35 | //左侧标题 36 | Widget renderLeft(ScreenUtil _screenInstance) { 37 | var title = new Text( 38 | this.titleText, 39 | style: new TextStyle( 40 | color: styles.ComponentStyle.TITLE_TEXT_COLOR, 41 | fontSize: _screenInstance.setSp(34)), 42 | ); 43 | return title; 44 | } 45 | 46 | Widget renderRight() { 47 | return Container( 48 | margin: EdgeInsets.only(right: 25), 49 | child: new Image.asset( 50 | 'assets/images/icon_right_arrow.png', 51 | width: 18, 52 | height: 18, 53 | ), 54 | ); 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /lib/component/item_component_type_two/item_two_root_layout.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/base/widget/base_stateless_widget.dart'; 3 | import 'package:flutter_sample/component/item_component_type_two/item_title.dart'; 4 | import 'package:flutter_sample/component/item_component_type_two/item_view_pager.dart'; 5 | import 'package:flutter_sample/component/widget/common/dividing_line.dart'; 6 | 7 | class ItemRootTypeTwo extends BaseStatelessWidget { 8 | final String title; 9 | final List imgList; 10 | ItemRootTypeTwo(this.title, this.imgList); 11 | 12 | @override 13 | Widget build(BuildContext context) { 14 | return Padding( 15 | padding: EdgeInsets.only(left: 25.0), 16 | child: new Column( 17 | children: [ 18 | new ItemTitleTypeTwo(this.title, () { 19 | showToast(this.title); 20 | }), 21 | ItemViewPagerTypeTwo(this.imgList), 22 | new DividingLine() 23 | ], 24 | ), 25 | ); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /lib/component/item_component_type_two/item_view_pager.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/base/widget/base_stateless_widget.dart'; 3 | import 'package:flutter_sample/utils/screen_util.dart'; 4 | import '../../style/style.dart' as styles; 5 | 6 | class ItemViewPagerTypeTwo extends BaseStatelessWidget { 7 | final List imgList; 8 | final bool needBottomText; 9 | final double imageWidth; 10 | ItemViewPagerTypeTwo(this.imgList, 11 | {this.needBottomText = true, this.imageWidth = 170.0}); 12 | @override 13 | Widget build(BuildContext context) { 14 | ScreenUtil.instance = ScreenUtil(width: 750, height: 1334)..init(context); 15 | var _screenInstance = ScreenUtil.getInstance(); 16 | return Container( 17 | height: imageWidth + (needBottomText ? 50.0 : 0), 18 | child: new ListView.builder( 19 | physics: new ClampingScrollPhysics(), //禁用回弹 20 | controller: new ScrollController(keepScrollOffset: false), 21 | scrollDirection: Axis.horizontal, 22 | itemCount: imgList.length, 23 | itemBuilder: (BuildContext context, int position) { 24 | return renderItem(position, context, _screenInstance); 25 | }), 26 | ); 27 | } 28 | 29 | Widget renderItem( 30 | int position, BuildContext context, ScreenUtil _screenInstance) { 31 | var rootView = Column( 32 | crossAxisAlignment: CrossAxisAlignment.start, 33 | children: [ 34 | new GestureDetector( 35 | onTap: () { 36 | showToast('点击图片item'); 37 | }, 38 | child: new Container( 39 | margin: EdgeInsets.only(right: 5), 40 | child: Image.network(imgList[position], width: this.imageWidth), 41 | ), 42 | ), 43 | renderBottomText(_screenInstance) 44 | ], 45 | ); 46 | return rootView; 47 | } 48 | 49 | Widget renderBottomText(ScreenUtil _screenInstance) { 50 | if (!needBottomText) { 51 | return Container(); 52 | } 53 | return Container( 54 | margin: EdgeInsets.only(top: 10, bottom: 10), 55 | child: new Text( 56 | "ES8 购车指南", 57 | style: new TextStyle( 58 | color: styles.ComponentStyle.TITLE_TEXT_COLOR, 59 | fontSize: _screenInstance.setSp(30)), 60 | ), 61 | ); 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /lib/component/widget/common/app_bar.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/base/widget/base_stateless_widget.dart'; 3 | import '../../../style/style.dart' as styles; 4 | 5 | class CommonBar extends BaseStatelessWidget implements PreferredSizeWidget { 6 | final String titleString; 7 | final Function onBackClick; 8 | final PreferredSizeWidget bottom; 9 | final double elevation; 10 | CommonBar({this.titleString, this.onBackClick, this.bottom, this.elevation}); 11 | @override 12 | Widget build(BuildContext context) { 13 | return AppBar( 14 | elevation: null != elevation ? elevation : 0.0, 15 | title: Text( 16 | this.titleString ?? '', 17 | style: TextStyle(color: styles.ComponentStyle.TITLE_TEXT_COLOR), 18 | ), 19 | leading: Builder( 20 | builder: (BuildContext context) { 21 | return renderLeft(context); 22 | }, 23 | ), 24 | ); 25 | } 26 | 27 | Padding renderLeft(BuildContext context) { 28 | //包一个Padding控制按钮位置 29 | return Padding( 30 | padding: const EdgeInsets.only(left: 8.0), 31 | child: IconButton( 32 | icon: Image.asset( 33 | 'assets/images/left_back_icon.png', 34 | width: 24, 35 | height: 24, 36 | ), 37 | onPressed: () { 38 | null != this.onBackClick ? onBackClick() : Navigator.pop(context); 39 | }, 40 | ), 41 | ); 42 | } 43 | 44 | @override 45 | Size get preferredSize => 46 | Size.fromHeight(kToolbarHeight + (bottom?.preferredSize?.height ?? 0.0)); 47 | } 48 | -------------------------------------------------------------------------------- /lib/component/widget/common/dividing_line.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/base/widget/base_stateless_widget.dart'; 3 | import 'package:flutter_sample/utils/screen_util.dart'; 4 | import '../../../style/style.dart' as styles; 5 | /* 6 | * 7 | * 公用的分割线 8 | */ 9 | 10 | class DividingLine extends BaseStatelessWidget { 11 | final bool isCenter; 12 | 13 | DividingLine({this.isCenter = false}); 14 | @override 15 | Widget build(BuildContext context) { 16 | return Container( 17 | color: styles.ComponentStyle.DIVIVIDING_LINE_COLOR, 18 | width: ScreenUtil.screenWidth, 19 | height: 1.5, 20 | margin: EdgeInsets.only( 21 | bottom: 10 + (isCenter ? 20.0 : 0.0), 22 | left: isCenter ? 25 : 0, 23 | right: isCenter ? 25 : 0), 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/component/widget/navigation_keep_alive.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/component/home_main_item.dart'; 3 | import 'package:flutter_sample/page/home/top_experience.dart'; 4 | import 'package:flutter_sample/page/home/top_information.dart'; 5 | import 'package:flutter_sample/page/home/top_moment.dart'; 6 | 7 | class NavigationKeepAlive extends StatefulWidget { 8 | @override 9 | _NavigationKeepAliveState createState() => _NavigationKeepAliveState(); 10 | } 11 | 12 | class _NavigationKeepAliveState extends State 13 | with SingleTickerProviderStateMixin { 14 | 15 | final _bottomNavigationColor = Colors.blue; 16 | int _currentIndex = 0; 17 | var _controller = PageController( 18 | initialPage: 0, 19 | ); 20 | 21 | @override 22 | void dispose() { 23 | super.dispose(); 24 | _controller.dispose(); 25 | } 26 | 27 | @override 28 | Widget build(BuildContext context) { 29 | return Scaffold( 30 | body: PageView( 31 | controller: _controller, 32 | children: [ 33 | HomeMainItem(), 34 | MomentComponent(), 35 | ExperienceComponent(), 36 | InformationComponent() 37 | ], 38 | physics: NeverScrollableScrollPhysics(), 39 | ), 40 | bottomNavigationBar: BottomNavigationBar( 41 | currentIndex: _currentIndex, 42 | // onTap: (index)=> _controller.animateToPage(index, duration: Duration(milliseconds: 500), curve: Curves.fastOutSlowIn), 43 | onTap: (index) { 44 | _controller.jumpToPage(index); 45 | setState(() { 46 | _currentIndex = index; 47 | }); 48 | }, 49 | type: BottomNavigationBarType.fixed, 50 | items: [ 51 | BottomNavigationBarItem( 52 | icon: Icon( 53 | Icons.home, 54 | color: _bottomNavigationColor, 55 | ), 56 | title: Text( 57 | 'HOME', 58 | style: TextStyle(color: _bottomNavigationColor), 59 | )), 60 | BottomNavigationBarItem( 61 | icon: Icon( 62 | Icons.email, 63 | color: _bottomNavigationColor, 64 | ), 65 | title: Text( 66 | 'Email', 67 | style: TextStyle(color: _bottomNavigationColor), 68 | )), 69 | BottomNavigationBarItem( 70 | icon: Icon( 71 | Icons.pages, 72 | color: _bottomNavigationColor, 73 | ), 74 | title: Text( 75 | 'PAGES', 76 | style: TextStyle(color: _bottomNavigationColor), 77 | )), 78 | BottomNavigationBarItem( 79 | icon: Icon( 80 | Icons.airplay, 81 | color: _bottomNavigationColor, 82 | ), 83 | title: Text( 84 | 'AIRPLAY', 85 | style: TextStyle(color: _bottomNavigationColor), 86 | )), 87 | ], 88 | ), 89 | ); 90 | } 91 | } -------------------------------------------------------------------------------- /lib/component/widget/pop/paint_event.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter/rendering.dart'; 3 | 4 | typedef PaintCallback = void Function(PaintingContext context, Offset offset,Size size); 5 | 6 | class PaintEvent extends SingleChildRenderObjectWidget{ 7 | 8 | 9 | final PaintCallback paintBefore; 10 | final PaintCallback paintAfter; 11 | 12 | 13 | const PaintEvent({ 14 | Key key, 15 | this.paintBefore, 16 | this.paintAfter, 17 | Widget child 18 | }) : 19 | super(key: key, child: child); 20 | @override 21 | PaintEventProxyBox createRenderObject(BuildContext context) { 22 | return PaintEventProxyBox( 23 | paintAfter: paintAfter, 24 | paintBefore: paintBefore 25 | ); 26 | } 27 | 28 | @override 29 | void updateRenderObject(BuildContext context, PaintEventProxyBox renderObject) { 30 | renderObject..paintAfter = paintBefore 31 | ..paintAfter = paintAfter; 32 | } 33 | 34 | } 35 | 36 | 37 | class PaintEventProxyBox extends RenderProxyBox{ 38 | PaintCallback paintBefore; 39 | PaintCallback paintAfter; 40 | 41 | PaintEventProxyBox({ 42 | RenderBox child, 43 | this.paintBefore, 44 | this.paintAfter 45 | }):super(child); 46 | 47 | @override 48 | void detach() { 49 | super.detach(); 50 | markNeedsPaint(); 51 | } 52 | 53 | @override 54 | void paint(PaintingContext context, Offset offset) { 55 | assert(size.width != null); 56 | assert(size.height != null); 57 | 58 | if(this.paintBefore != null){ 59 | this.paintBefore(context,offset,size); 60 | } 61 | 62 | super.paint(context, offset); 63 | 64 | 65 | 66 | if(this.paintAfter != null){ 67 | this.paintAfter(context,offset,size); 68 | } 69 | 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /lib/config/application.dart: -------------------------------------------------------------------------------- 1 | import 'package:fluro/fluro.dart'; 2 | 3 | class Application { 4 | static Router router; 5 | } -------------------------------------------------------------------------------- /lib/config/routes.dart: -------------------------------------------------------------------------------- 1 | import 'package:fluro/fluro.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:flutter_sample/config/route_handlers.dart'; 4 | import 'package:flutter_sample/page/me/me_setting/me_setting_list.dart'; 5 | 6 | class Routes { 7 | static String root = "/"; 8 | static String demoSimple = "/demo"; 9 | static String demoSimpleFixedTrans = "/demo/fixedtrans"; 10 | static String demoFunc = "/demo/func"; 11 | static String deepLink = "/message"; 12 | static String pageOne = "/page/one"; 13 | static String meSettingList = "/me/setting";//地址列表 14 | 15 | static void configureRoutes(Router router) { 16 | router.notFoundHandler = new Handler( 17 | handlerFunc: (BuildContext context, Map> params) { 18 | print("ROUTE WAS NOT FOUND !!!"); 19 | }); 20 | //跳转设置页面 21 | router.define(meSettingList, handler: new Handler( 22 | handlerFunc: (BuildContext context, Map> params) { 23 | return new MeSettingPage(); 24 | })); 25 | router.define(root, handler: rootHandler); 26 | router.define(demoSimple, handler: demoRouteHandler); 27 | router.define(demoSimpleFixedTrans, 28 | handler: demoRouteHandler, transitionType: TransitionType.inFromLeft); 29 | router.define(demoFunc, handler: demoFunctionHandler); 30 | router.define(deepLink, handler: deepLinkHandler); 31 | 32 | router.define(pageOne, handler: pageOneHandler); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /lib/helpers/color_helpers.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | enum ContrastPreference { 4 | none, 5 | light, 6 | dark, 7 | } 8 | 9 | class ColorHelpers { 10 | static int fromHexString(String argbHexString) { 11 | String useString = argbHexString; 12 | if (useString.startsWith("#")) { 13 | useString = useString.substring(1); // trim the starting '#' 14 | } 15 | if (useString.length < 8) { 16 | useString = "FF" + useString; 17 | } 18 | if (!useString.startsWith("0x")) { 19 | useString = "0x" + useString; 20 | } 21 | return int.parse(useString); 22 | } 23 | 24 | static final double _kMinContrastModifierRange = 0.35; 25 | static final double _kMaxContrastModifierRange = 0.65; 26 | 27 | /// Returns black or white depending on whether the source color is darker 28 | /// or lighter. If darker, will return white. If lighter, will return 29 | /// black. If the color is within 35-65% of the spectrum and a prefer 30 | /// value is specified, then white or black will be preferred. 31 | static Color blackOrWhiteContrastColor(Color sourceColor, 32 | {ContrastPreference prefer = ContrastPreference.none}) { 33 | // Will return a value between 0.0 (black) and 1.0 (white) 34 | double value = (((sourceColor.red * 299.0) + 35 | (sourceColor.green * 587.0) + 36 | (sourceColor.blue * 114.0)) / 37 | 1000.0) / 38 | 255.0; 39 | if (prefer != ContrastPreference.none) { 40 | if (value >= _kMinContrastModifierRange && 41 | value <= _kMaxContrastModifierRange) { 42 | return prefer == ContrastPreference.light 43 | ? new Color(0xFFFFFFFF) 44 | : new Color(0xFF000000); 45 | } 46 | } 47 | return value > 0.6 ? new Color(0xFF000000) : new Color(0xFFFFFFFF); 48 | } 49 | } -------------------------------------------------------------------------------- /lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/config/application.dart'; 3 | import 'package:flutter_sample/config/routes.dart'; 4 | import './view/home_page.dart'; 5 | import 'package:fluro/fluro.dart'; 6 | 7 | void main() => runApp(MyApp()); 8 | 9 | class MyApp extends StatelessWidget { 10 | //main.dart容器类的构造函数里初始化路由 11 | MyApp() { 12 | final router = new Router(); 13 | Routes.configureRoutes(router); 14 | Application.router = router; 15 | } 16 | @override 17 | Widget build(BuildContext context) { 18 | final app = MaterialApp( 19 | debugShowCheckedModeBanner: false, 20 | theme: ThemeData( 21 | primaryColor: Colors.white, 22 | ), 23 | home: HomePage(), 24 | onGenerateRoute: Application.router.generator, 25 | ); 26 | return app; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /lib/page/demo_message_component.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class DemoMessageComponent extends StatelessWidget { 4 | DemoMessageComponent( 5 | {@required this.message, this.color = const Color(0xFFFFFFFF)}); 6 | 7 | final String message; 8 | final Color color; 9 | 10 | @override 11 | Widget build(BuildContext context) { 12 | return new Material( 13 | color: this.color, 14 | child: new Center( 15 | child: new Text( 16 | message, 17 | style: new TextStyle( 18 | fontFamily: "Lazer84", 19 | ), 20 | )), 21 | ); 22 | } 23 | } -------------------------------------------------------------------------------- /lib/page/demo_result_component.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class DemoResultComponent extends StatefulWidget { 4 | @override 5 | _DemoResultComponentState createState() => new _DemoResultComponentState(); 6 | } 7 | 8 | class _DemoResultComponentState extends State { 9 | @override 10 | Widget build(BuildContext context) { 11 | return new Container(); 12 | } 13 | } -------------------------------------------------------------------------------- /lib/page/demo_simple_component.dart: -------------------------------------------------------------------------------- 1 | import '../helpers/color_helpers.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | class DemoSimpleComponent extends StatelessWidget { 5 | DemoSimpleComponent( 6 | {String message = "Testing", 7 | Color color = const Color(0xFFFFFFFF), 8 | String result}) 9 | : this.message = message, 10 | this.color = color, 11 | this.result = result; 12 | 13 | final String message; 14 | final Color color; 15 | final String result; 16 | 17 | @override 18 | Widget build(BuildContext context) { 19 | return new Material( 20 | color: color, 21 | child: new Column( 22 | mainAxisAlignment: MainAxisAlignment.center, 23 | children: [ 24 | new Image( 25 | image: new AssetImage("assets/images/comment.png"), 26 | color: ColorHelpers.blackOrWhiteContrastColor(color), 27 | width: 260.0, 28 | ), 29 | new Padding( 30 | padding: new EdgeInsets.only(left: 50.0, right: 50.0, top: 15.0), 31 | child: new Text( 32 | message, 33 | textAlign: TextAlign.center, 34 | style: new TextStyle( 35 | color: ColorHelpers.blackOrWhiteContrastColor(color), 36 | height: 2.0, 37 | ), 38 | ), 39 | ), 40 | new Padding( 41 | padding: new EdgeInsets.only(top: 15.0), 42 | child: new ConstrainedBox( 43 | constraints: new BoxConstraints(minHeight: 42.0), 44 | child: new FlatButton( 45 | highlightColor: 46 | ColorHelpers.blackOrWhiteContrastColor(color).withAlpha(17), 47 | splashColor: 48 | ColorHelpers.blackOrWhiteContrastColor(color).withAlpha(34), 49 | onPressed: () { 50 | if (result == null) { 51 | Navigator.pop(context); 52 | } else { 53 | Navigator.pop(context, result); 54 | } 55 | }, 56 | child: new Text( 57 | "OK", 58 | style: new TextStyle( 59 | fontSize: 18.0, 60 | color: ColorHelpers.blackOrWhiteContrastColor(color), 61 | ), 62 | ), 63 | ), 64 | ), 65 | ), 66 | ], 67 | ), 68 | ); 69 | } 70 | } -------------------------------------------------------------------------------- /lib/page/friend/FriendComponent.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/base/page/base_stateful_page.dart'; 3 | 4 | class FriendComponent extends BaseStatefulPage { 5 | //构造函数传参 6 | const FriendComponent({Key key, this.data}) : super(key: key); 7 | final String data; 8 | 9 | @override 10 | State createState() { 11 | return new FriendComponentState(); 12 | } 13 | } 14 | 15 | class FriendComponentState extends BasePageState { 16 | @override 17 | Widget build(BuildContext context) { 18 | return new Text("FriendComponentState"); 19 | } 20 | 21 | @override 22 | String trackPageBeginMethod() { 23 | return null; 24 | } 25 | 26 | @override 27 | String trackPageEndMethod() { 28 | return null; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /lib/page/gift/article/mall_article_root.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/base/widget/base_stateless_widget.dart'; 3 | import 'package:flutter_sample/bean/home/mall/mall_main.dart'; 4 | import 'package:flutter_sample/page/gift/article/mall_article_item.dart'; 5 | import 'package:flutter_sample/utils/screen_util.dart'; 6 | 7 | class MallArticleComponent extends BaseStatelessWidget { 8 | const MallArticleComponent( 9 | {Key key, this.mallArticleBeans, this.haveLine = false}) 10 | : super(key: key); 11 | final List mallArticleBeans; 12 | final bool haveLine; 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | ScreenUtil.instance = ScreenUtil(width: 750, height: 1334)..init(context); 17 | var screenInstance = ScreenUtil.getInstance(); 18 | return ListView.builder( 19 | shrinkWrap: true, 20 | physics: NeverScrollableScrollPhysics(), 21 | itemCount: mallArticleBeans != null ? mallArticleBeans.length : 0, 22 | itemBuilder: (BuildContext context, int position) { 23 | return renderitem(context, position, screenInstance); 24 | }, 25 | ); 26 | } 27 | 28 | Widget renderitem( 29 | BuildContext context, int position, ScreenUtil screenInstance) { 30 | return MallArticleItemComponent( 31 | mallArticleBean: mallArticleBeans[position], haveLine: this.haveLine); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /lib/page/gift/mall_all_goods.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/base/widget/base_stateless_widget.dart'; 3 | import 'package:flutter_sample/bean/home/mall/mall_main.dart'; 4 | import 'package:flutter_sample/utils/screen_util.dart'; 5 | import '../../style/style.dart' as styles; 6 | 7 | class MallAllGoodsComponent extends BaseStatelessWidget { 8 | final AllGoodsBean bean; 9 | final bool haveLine; 10 | 11 | MallAllGoodsComponent(this.bean, {this.haveLine}); 12 | 13 | @override 14 | Widget build(BuildContext context) { 15 | ScreenUtil.instance = ScreenUtil(width: 750, height: 1334)..init(context); 16 | var screenInstance = ScreenUtil.getInstance(); 17 | return Container( 18 | child: Stack( 19 | children: [ 20 | Align( 21 | alignment: new Alignment(0.0, 1), 22 | child: GestureDetector( 23 | onTap: () { 24 | showToast('点击了全部商品'); 25 | }, 26 | child: Container( 27 | height: screenInstance.setWidth(60), 28 | width: screenInstance.setWidth(130), 29 | child: Center( 30 | child: Text( 31 | '全部商品', 32 | style: TextStyle( 33 | fontSize: screenInstance.setSp(26), 34 | color: styles.ComponentStyle.APP_MAIN_COLOR), 35 | ), 36 | ), 37 | decoration: BoxDecoration( 38 | borderRadius: BorderRadius.all(Radius.circular(20.0)), 39 | color: styles.ComponentStyle.MALL_FOCUS_BG), 40 | ), 41 | ), 42 | ), 43 | ], 44 | ), 45 | margin: EdgeInsets.only(bottom: 30), 46 | ); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /lib/page/gift/mall_big_item.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/base/widget/base_stateless_widget.dart'; 3 | import 'package:flutter_sample/bean/home/mall/mall_main.dart'; 4 | import 'package:flutter_sample/component/widget/common/dividing_line.dart'; 5 | import 'package:flutter_sample/utils/screen_util.dart'; 6 | import '../../style/style.dart' as styles; 7 | 8 | class MallBigItemComponent extends BaseStatelessWidget { 9 | final BigItemBean bean; 10 | final bool haveLine; 11 | 12 | MallBigItemComponent(this.bean, {this.haveLine}); 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | ScreenUtil.instance = ScreenUtil(width: 750, height: 1334)..init(context); 17 | var screenInstance = ScreenUtil.getInstance(); 18 | return GestureDetector(child: Container( 19 | child: Column( 20 | children: [ 21 | Image.network( 22 | bean.img, 23 | height: screenInstance.setHeight(300), 24 | width: ScreenUtil.screenWidthDp, 25 | fit: BoxFit.fill, 26 | ), 27 | Container( 28 | child: Text( 29 | bean.title.toString(), 30 | style: TextStyle( 31 | color: styles.ComponentStyle.TITLE_TEXT_COLOR, 32 | fontSize: screenInstance.setWidth(28)), 33 | ), 34 | margin: EdgeInsets.only(top: 5), 35 | ), 36 | Row( 37 | children: [ 38 | Image.asset( 39 | 'assets/images/point_icon.png', 40 | height: screenInstance.setWidth(32), 41 | width: screenInstance.setWidth(32), 42 | ), 43 | Container( 44 | child: Text( 45 | bean.price.originPricePoint.toString(), 46 | style: 47 | TextStyle(color: styles.ComponentStyle.FOOT_TEXT_COLOR), 48 | ), 49 | margin: EdgeInsets.only( 50 | top: 5, 51 | left: 5, 52 | ), 53 | ) 54 | ], 55 | ), 56 | renderLine(), 57 | ], 58 | crossAxisAlignment: CrossAxisAlignment.start, 59 | ), 60 | margin: EdgeInsets.only( 61 | left: 25, 62 | right: 25, 63 | ), 64 | ),onTap: (){ 65 | showToast(bean.spuCode); 66 | },); 67 | } 68 | 69 | Widget renderLine() { 70 | if (null != this.haveLine && this.haveLine == true) { 71 | return Container( 72 | child: DividingLine(isCenter: false), 73 | margin: EdgeInsets.only(top: 30), 74 | ); 75 | } else { 76 | return Container( 77 | margin: EdgeInsets.only( 78 | bottom: haveLine ? 0 : 30, 79 | ), 80 | ); 81 | } 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /lib/page/gift/mall_goods_root.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/base/widget/base_stateless_widget.dart'; 3 | import 'package:flutter_sample/bean/home/mall/mall_main.dart'; 4 | import 'package:flutter_sample/utils/screen_util.dart'; 5 | import '../../style/style.dart' as styles; 6 | 7 | class MallGridGoodsComponent extends BaseStatelessWidget { 8 | final List mallGoods; 9 | 10 | MallGridGoodsComponent(this.mallGoods); 11 | @override 12 | Widget build(BuildContext context) { 13 | ScreenUtil.instance = ScreenUtil(width: 750, height: 1334)..init(context); 14 | var screenInstance = ScreenUtil.getInstance(); 15 | return Container( 16 | child: new GridView.builder( 17 | itemCount: mallGoods.length, 18 | shrinkWrap: true, 19 | physics: NeverScrollableScrollPhysics(), 20 | gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( 21 | crossAxisCount: 2, 22 | crossAxisSpacing: 8.0, 23 | childAspectRatio: 7 / 10, 24 | ), 25 | itemBuilder: (BuildContext context, int index) { 26 | return renderGridItem(screenInstance, context, index); 27 | }), 28 | margin: EdgeInsets.only(left: 25, right: 25), 29 | ); 30 | } 31 | 32 | Widget renderGridItem( 33 | ScreenUtil screenInstance, BuildContext context, int index) { 34 | MallGoodsItemBean bean = mallGoods[index]; 35 | return GestureDetector( 36 | child: Container( 37 | child: Column( 38 | //左对齐 39 | crossAxisAlignment: CrossAxisAlignment.start, 40 | children: [ 41 | Padding( 42 | child: Image.network( 43 | bean.img, 44 | ), 45 | padding: EdgeInsets.only(bottom: 4), 46 | ), 47 | Padding( 48 | padding: EdgeInsets.only(bottom: 2), 49 | child: Text(bean.title, 50 | maxLines: 1, 51 | overflow: TextOverflow.ellipsis, 52 | style: TextStyle( 53 | color: styles.ComponentStyle.TITLE_TEXT_COLOR, 54 | fontSize: screenInstance.setWidth(28))), 55 | ), 56 | Row( 57 | children: [ 58 | Image.asset( 59 | 'assets/images/point_icon.png', 60 | height: screenInstance.setWidth(32), 61 | width: screenInstance.setWidth(32), 62 | ), 63 | Container( 64 | child: Text( 65 | bean.price.originPricePoint.toString(), 66 | style: 67 | TextStyle(color: styles.ComponentStyle.FOOT_TEXT_COLOR), 68 | ), 69 | margin: EdgeInsets.only(left: 5), 70 | ) 71 | ], 72 | ) 73 | ], 74 | ), 75 | ), 76 | onTap: () { 77 | showToast(bean.spuCode); 78 | }, 79 | ); 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /lib/page/gift/mall_left_navigation.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/base/widget/base_stateless_widget.dart'; 3 | import 'package:flutter_sample/bean/home/mall/mall_main.dart'; 4 | import 'package:flutter_sample/component/item_component_type_two/item_view_pager.dart'; 5 | 6 | class MallLeftNavigationComponent extends BaseStatelessWidget { 7 | final List bannerData; 8 | final bool haveLine; 9 | MallLeftNavigationComponent({Key key, this.bannerData, this.haveLine}) 10 | : super(key: key); 11 | 12 | @override 13 | Widget build(BuildContext context) { 14 | return renderViewPager(); 15 | } 16 | 17 | Widget renderViewPager() { 18 | List list = new List(); 19 | if (null != bannerData && bannerData.length > 0) { 20 | for (int k = 0; k < bannerData.length; k++) { 21 | list.add(bannerData[k].img); 22 | } 23 | return Container( 24 | child: ItemViewPagerTypeTwo(list, needBottomText: false,imageWidth:130), 25 | margin: EdgeInsets.only( 26 | left: 25,bottom: 30 27 | ), 28 | ); 29 | } 30 | return null; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /lib/page/gift/mall_no_more.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/base/widget/base_stateless_widget.dart'; 3 | import 'package:flutter_sample/bean/home/mall/mall_main.dart'; 4 | import '../../style/style.dart' as styles; 5 | 6 | class MallLastTextComponent extends BaseStatelessWidget { 7 | final LastTextBean bean; 8 | 9 | MallLastTextComponent(this.bean); 10 | @override 11 | Widget build(BuildContext context) { 12 | return Container( 13 | child: Stack( 14 | children: [ 15 | Align( 16 | alignment: new Alignment(0.0, 1), 17 | child: Text( 18 | '- ' + bean.text + ' -', 19 | style: TextStyle( 20 | fontSize: 16, color: styles.ComponentStyle.FOOT_TEXT_COLOR), 21 | ), 22 | ), 23 | ], 24 | ), 25 | margin: EdgeInsets.only(bottom: 30), 26 | ); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /lib/page/gift/mall_page_banner.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/base/widget/base_stateful_widget.dart'; 3 | import 'package:flutter_sample/bean/home/mall/mall_main.dart'; 4 | import 'package:flutter_sample/component/widget/common/dividing_line.dart'; 5 | import 'package:flutter_sample/component/widget/page_indicator.dart'; 6 | import 'package:flutter_sample/utils/screen_util.dart'; 7 | import 'package:flutter_swiper/flutter_swiper.dart'; 8 | 9 | class MallBannerComponent extends BaseStatefullWidget { 10 | final List bannerData; 11 | final bool haveLine; 12 | MallBannerComponent({Key key, this.bannerData, this.haveLine}) 13 | : super(key: key); 14 | 15 | @override 16 | State createState() { 17 | return new MallBannerComponentState(); 18 | } 19 | } 20 | 21 | class MallBannerComponentState extends BaseState { 22 | @override 23 | void initState() { 24 | super.initState(); 25 | } 26 | 27 | @override 28 | void didUpdateWidget(MallBannerComponent oldWidget) { 29 | super.didUpdateWidget(oldWidget); 30 | } 31 | 32 | @override 33 | Widget build(BuildContext context) { 34 | if (widget.bannerData.length == 0) { 35 | return new Image.asset( 36 | 'assets/images/banner_default_img.png', 37 | fit: BoxFit.fill, 38 | ); 39 | } 40 | return Column( 41 | children: [ 42 | Container( 43 | margin: EdgeInsets.only(bottom: 30), 44 | height: (ScreenUtil.screenWidthDp - 50), 45 | child: Swiper( 46 | itemBuilder: (BuildContext context, int index) { 47 | return new Image.network( 48 | widget.bannerData[index].img, 49 | fit: BoxFit.fill, 50 | ); 51 | }, 52 | onTap: ((int index) { 53 | showToast(widget.bannerData[index].goto.link); 54 | }), 55 | itemCount: widget.bannerData.length, 56 | pagination: new SwiperPagination( 57 | alignment: Alignment.bottomCenter, 58 | builder: new SwiperCustomPagination( 59 | builder: (BuildContext context, SwiperPluginConfig config) { 60 | return new PageIndicator( 61 | layout: PageIndicatorLayout.NIO, 62 | size: 10.0, 63 | space: 15.0, 64 | count: widget.bannerData.length, 65 | controller: config.pageController, 66 | ); 67 | })), 68 | autoplay: true, 69 | ), 70 | ), 71 | renderLine() 72 | ], 73 | ); 74 | } 75 | 76 | Widget renderLine() { 77 | if (null!=widget.haveLine && widget.haveLine == true) { 78 | return DividingLine(isCenter:true); 79 | } 80 | return Container(); 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /lib/page/gift/mall_summary.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/base/widget/base_stateless_widget.dart'; 3 | import 'package:flutter_sample/bean/home/mall/mall_main.dart'; 4 | import '../../style/style.dart' as styles; 5 | 6 | class MallSummaryComponent extends BaseStatelessWidget { 7 | final MallSummaryBean mallSummaryBean; 8 | 9 | MallSummaryComponent(this.mallSummaryBean); 10 | 11 | @override 12 | Widget build(BuildContext context) { 13 | return Container( 14 | margin: EdgeInsets.only(bottom: 30, left: 25), 15 | child: Text( 16 | mallSummaryBean.text, 17 | style: TextStyle( 18 | color: styles.ComponentStyle.TITLE_TEXT_COLOR, fontSize: 20), 19 | ), 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /lib/page/home/top_experience.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/base/page/base_stateful_page.dart'; 3 | 4 | class ExperienceComponent extends BaseStatefulPage { 5 | //构造函数传参 6 | const ExperienceComponent({Key key, this.data}) : super(key: key); 7 | final String data; 8 | 9 | @override 10 | State createState() { 11 | return new ExperienceComponentState(); 12 | } 13 | } 14 | 15 | class ExperienceComponentState extends BasePageState { 16 | @override 17 | Widget build(BuildContext context) { 18 | return new Text("ExperienceComponentState"); 19 | } 20 | 21 | @override 22 | String trackPageBeginMethod() { 23 | return null; 24 | } 25 | 26 | @override 27 | String trackPageEndMethod() { 28 | return null; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /lib/page/home/top_information.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/base/page/base_stateful_page.dart'; 3 | 4 | class InformationComponent extends BaseStatefulPage { 5 | //构造函数传参 6 | const InformationComponent({Key key, this.data}) : super(key: key); 7 | final String data; 8 | 9 | @override 10 | State createState() { 11 | return new InformationComponentState(); 12 | } 13 | } 14 | 15 | class InformationComponentState extends BasePageState { 16 | @override 17 | Widget build(BuildContext context) { 18 | return new Text("InformationComponentState"); 19 | } 20 | 21 | @override 22 | String trackPageBeginMethod() { 23 | return null; 24 | } 25 | 26 | @override 27 | String trackPageEndMethod() { 28 | return null; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /lib/page/home/top_moment.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/base/page/base_stateful_page.dart'; 3 | import 'package:shared_preferences/shared_preferences.dart'; 4 | 5 | class MomentComponent extends BaseStatefulPage { 6 | //构造函数传参 7 | const MomentComponent({Key key, this.data}) : super(key: key); 8 | final String data; 9 | 10 | @override 11 | State createState() { 12 | return new MomentComponentState(); 13 | } 14 | } 15 | 16 | class MomentComponentState extends BasePageState { 17 | @override 18 | Widget build(BuildContext context) { 19 | return Center( 20 | child: Column( 21 | children: [ 22 | RaisedButton( 23 | child: Text('存储'), 24 | onPressed: save, 25 | ), 26 | RaisedButton( 27 | child: Text('读取'), 28 | onPressed: _readShared, 29 | ), 30 | RaisedButton( 31 | child: Text('删除'), 32 | onPressed: _removeShared, 33 | ) 34 | ], 35 | ), 36 | ); 37 | } 38 | 39 | @override 40 | String trackPageBeginMethod() { 41 | return null; 42 | } 43 | 44 | @override 45 | String trackPageEndMethod() { 46 | return null; 47 | } 48 | 49 | /* 50 | * 存储数据 51 | */ 52 | Future save() async { 53 | SharedPreferences preferences = await SharedPreferences.getInstance(); 54 | await preferences.setString('account', "10086"); 55 | } 56 | 57 | /* 58 | * 读取数据 59 | */ 60 | Future _readShared() async { 61 | SharedPreferences preferences = await SharedPreferences.getInstance(); 62 | String account = preferences.get('account'); 63 | if (null != account) { 64 | showToast(account); 65 | } else { 66 | showToast('数据为空'); 67 | } 68 | } 69 | 70 | /* 71 | * 删除数据 72 | */ 73 | Future _removeShared() async { 74 | SharedPreferences preferences = await SharedPreferences.getInstance(); 75 | preferences.remove('account'); 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /lib/page/home/top_recommend.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/base/page/base_stateful_page.dart'; 3 | 4 | class RecommendComponent extends BaseStatefulPage { 5 | //构造函数传参 6 | const RecommendComponent({Key key, this.data}) : super(key: key); 7 | final String data; 8 | 9 | @override 10 | State createState() { 11 | return new RecommendComponentState(); 12 | } 13 | } 14 | 15 | class RecommendComponentState extends BasePageState with AutomaticKeepAliveClientMixin{ 16 | @override 17 | Widget build(BuildContext context) { 18 | return new Text("RecommendComponentState"); 19 | } 20 | 21 | @override 22 | String trackPageBeginMethod() { 23 | return null; 24 | } 25 | 26 | @override 27 | String trackPageEndMethod() { 28 | return null; 29 | } 30 | 31 | @override 32 | bool get wantKeepAlive => true; 33 | } 34 | -------------------------------------------------------------------------------- /lib/page/me/me_page_root.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/base/page/base_stateful_page.dart'; 3 | import 'package:flutter_sample/bean/home/me/user_info.dart'; 4 | import 'package:flutter_sample/page/me/me_page_list.dart'; 5 | import 'package:flutter_sample/page/me/me_page_title.dart'; 6 | 7 | class MeComponent extends BaseStatefulPage { 8 | //构造函数传参 9 | const MeComponent({Key key, this.data}) : super(key: key); 10 | final String data; 11 | 12 | @override 13 | State createState() { 14 | return new MeComponentState(); 15 | } 16 | } 17 | 18 | class MeComponentState extends BasePageState { 19 | var isLogin = false; 20 | var isCheck = false; 21 | 22 | @override 23 | Widget build(BuildContext context) { 24 | return SafeArea( 25 | child: SingleChildScrollView( 26 | physics: new ClampingScrollPhysics(), //禁用回弹 27 | padding: const EdgeInsets.symmetric(horizontal: 25.0), 28 | child: Column( 29 | children: [ 30 | new MePageTitle(isLogin, isCheck, () { 31 | debugPrint('--->头部点击回调'); 32 | setState(() { 33 | isLogin = !isLogin; 34 | }); 35 | }, () { 36 | debugPrint('--->签到点击回调'); 37 | setState(() { 38 | isCheck = !isCheck; 39 | }); 40 | }, initUserData()), 41 | new MePageList() 42 | ], 43 | ), 44 | )); 45 | } 46 | 47 | @override 48 | String trackPageBeginMethod() { 49 | return null; 50 | } 51 | 52 | @override 53 | String trackPageEndMethod() { 54 | return null; 55 | } 56 | 57 | UserInfo initUserData() { 58 | UserInfo userInfo = new UserInfo( 59 | userName: '王亟鸡阿米达', 60 | userType: "认证用户", 61 | userScore: "10086", 62 | signNumeber: "20", 63 | userHeaderImg: 64 | 'https://avatars3.githubusercontent.com/u/9019351?s=460&v=4'); 65 | return userInfo; 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /lib/page/me/me_setting/me_setting_item.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/base/widget/base_stateless_widget.dart'; 3 | import 'package:flutter_sample/component/widget/common/dividing_line.dart'; 4 | import '../../../style/style.dart' as styles; 5 | 6 | class MeSettingItem extends BaseStatelessWidget { 7 | final int index; 8 | final String title; 9 | final int type; 10 | MeSettingItem({this.index, this.title, this.type}); 11 | @override 12 | Widget build(BuildContext context) { 13 | return GestureDetector( 14 | child: Container( 15 | child: Column( 16 | children: [ 17 | Container( 18 | height: 54, 19 | child: Center( 20 | child: Row( 21 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 22 | children: [ 23 | Text( 24 | this.title, 25 | style: TextStyle( 26 | color: styles.ComponentStyle.TITLE_TEXT_COLOR, 27 | fontSize: 16), 28 | ), 29 | renderRight(this.type) 30 | ], 31 | ), 32 | ), 33 | ), 34 | DividingLine(), 35 | ], 36 | ), 37 | margin: EdgeInsets.only( 38 | left: 25, 39 | right: 25, 40 | ), 41 | ), 42 | onTap: () { 43 | showToast(this.title); 44 | }, 45 | ); 46 | } 47 | 48 | Widget renderRight(int type) { 49 | if (type == 1) { 50 | return Container( 51 | child: new Image.asset( 52 | 'assets/images/icon_right_arrow.png', 53 | width: 18, 54 | height: 18, 55 | ), 56 | ); 57 | } else { 58 | return Text( 59 | 'V3.6.0 test', 60 | style: TextStyle(color: styles.ComponentStyle.FOOT_TEXT_COLOR), 61 | ); 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /lib/page/me/me_setting/me_setting_list.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/base/widget/base_stateful_widget.dart'; 3 | import 'package:flutter_sample/component/widget/common/app_bar.dart'; 4 | import 'package:flutter_sample/page/me/me_setting/me_setting_item.dart'; 5 | import 'package:flutter_sample/utils/screen_util.dart'; 6 | import '../../../style/style.dart' as styles; 7 | 8 | class MeSettingPage extends BaseStatefullWidget { 9 | @override 10 | State createState() { 11 | return MeSettingState(); 12 | } 13 | } 14 | 15 | class MeSettingState extends BaseState { 16 | List data = ['账号绑定', '错误反馈', '检查更新', '版本']; 17 | 18 | @override 19 | Widget build(BuildContext context) { 20 | ScreenUtil.instance = ScreenUtil(width: 750, height: 1334)..init(context); 21 | var screenInstance = ScreenUtil.getInstance(); 22 | return Scaffold( 23 | appBar: CommonBar( 24 | titleString: '设置', 25 | elevation: 1.0, 26 | ), 27 | body: Column( 28 | children: [ 29 | renderList(), 30 | renderBottom(screenInstance), 31 | ], 32 | )); 33 | } 34 | 35 | //渲染列表 36 | Widget renderList() { 37 | return Expanded( 38 | child: new ListView.builder( 39 | itemCount: data.length, 40 | itemBuilder: (BuildContext context, int position) { 41 | return MeSettingItem( 42 | index: position, 43 | title: data[position], 44 | type: (position == data.length - 1) ? 0 : 1); 45 | }), 46 | ); 47 | } 48 | 49 | Widget renderBottom(ScreenUtil instance) { 50 | return Container( 51 | width: ScreenUtil.screenWidthDp, 52 | padding: EdgeInsets.only(bottom: 30), 53 | child: Column( 54 | crossAxisAlignment: CrossAxisAlignment.center, 55 | children: [ 56 | Container( 57 | child: Row( 58 | mainAxisAlignment: MainAxisAlignment.center, 59 | children: [ 60 | Text( 61 | '联系我们:', 62 | style: 63 | TextStyle(color: styles.ComponentStyle.FOOT_TEXT_COLOR), 64 | ), 65 | GestureDetector( 66 | child: Text( 67 | '400-999-6699', 68 | style: 69 | TextStyle(color: styles.ComponentStyle.APP_MAIN_COLOR), 70 | ), 71 | onTap: () { 72 | showToast('拨打电话'); 73 | }, 74 | ) 75 | ], 76 | ), 77 | margin: EdgeInsets.only(bottom: 14), 78 | ), 79 | GestureDetector( 80 | child: Text( 81 | '申请注销账号', 82 | style: TextStyle(color: styles.ComponentStyle.FOOT_TEXT_COLOR), 83 | ), 84 | onTap: () { 85 | showToast("点击 注销账号"); 86 | }, 87 | ), 88 | ], 89 | ), 90 | ); 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /lib/page/my_car/MyCarComponent.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/base/page/base_stateful_page.dart'; 3 | 4 | class MyCarComponent extends BaseStatefulPage { 5 | //构造函数传参 6 | const MyCarComponent({Key key, this.data}) : super(key: key); 7 | final String data; 8 | 9 | @override 10 | State createState() { 11 | return new MyCarComponentState(); 12 | } 13 | } 14 | 15 | class MyCarComponentState extends BasePageState { 16 | @override 17 | Widget build(BuildContext context) { 18 | return new Text("MyCarComponentState"); 19 | } 20 | 21 | @override 22 | String trackPageBeginMethod() { 23 | return null; 24 | } 25 | 26 | @override 27 | String trackPageEndMethod() { 28 | return null; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /lib/page/page_one.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/base/page/base_stateful_page.dart'; 3 | import 'package:flutter_sample/helpers/color_helpers.dart'; 4 | 5 | class PageOneComponent extends BaseStatefulPage { 6 | PageOneComponent( 7 | {String message = "Testing", 8 | Color color = const Color(0xFFFFFFFF), 9 | String result}) 10 | : this.message = message, 11 | this.color = color, 12 | this.result = result; 13 | final String message; 14 | final Color color; 15 | final String result; 16 | 17 | @override 18 | State createState() { 19 | return PageOneState(message: message, color: color, result: result); 20 | } 21 | } 22 | 23 | class PageOneState extends BasePageState { 24 | PageOneState( 25 | {String message = "Testing", 26 | Color color = const Color(0xFFFFFFFF), 27 | String result}) 28 | : this.message = message, 29 | this.color = color, 30 | this.result = result; 31 | final String message; 32 | final Color color; 33 | final String result; 34 | 35 | @override 36 | Widget build(BuildContext context) { 37 | return new Material( 38 | color: this.color, 39 | child: new Padding( 40 | padding: new EdgeInsets.only(top: 15.0), 41 | child: new ConstrainedBox( 42 | constraints: new BoxConstraints(minHeight: 42.0), 43 | child: new FlatButton( 44 | highlightColor: 45 | ColorHelpers.blackOrWhiteContrastColor(color).withAlpha(17), 46 | splashColor: 47 | ColorHelpers.blackOrWhiteContrastColor(color).withAlpha(34), 48 | onPressed: () { 49 | if (result == null) { 50 | Navigator.pop(context); 51 | } else { 52 | Navigator.pop(context, result); 53 | } 54 | }, 55 | child: new Text( 56 | message + " 是传来的", 57 | style: new TextStyle( 58 | fontSize: 18.0, 59 | color: ColorHelpers.blackOrWhiteContrastColor(color), 60 | ), 61 | ), 62 | ), 63 | ), 64 | ), 65 | ); 66 | } 67 | 68 | @override 69 | String trackPageBeginMethod() { 70 | return "页面开始方法"; 71 | } 72 | 73 | @override 74 | String trackPageEndMethod() { 75 | return "页面结束方法"; 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /lib/style/style.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ComponentStyle { 4 | static const TITLE_TEXT_COLOR = const Color(0xFF363C54); 5 | static const FOOT_TEXT_COLOR = const Color(0xFF696D7F); 6 | static const UNDER_LINE_COLOR = const Color(0xFFCDCED4); 7 | static const DIVIVIDING_LINE_COLOR = const Color(0xFFF0F1F2); 8 | static const APP_MAIN_COLOR = const Color(0xFF00BCBC); 9 | static const MALL_FOCUS_BG = const Color(0xFFE6FAFA); 10 | } 11 | -------------------------------------------------------------------------------- /lib/utils/data_service/track_service.dart: -------------------------------------------------------------------------------- 1 | class TrackService { 2 | static trackBeginEvent({String eventID, Map data}) { 3 | print('---> TrackService trackBeginEvent '+eventID); 4 | } 5 | 6 | static trackEndEvent({String eventID, Map data}) { 7 | print('---> TrackService trackEndEvent eventID '+eventID); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lib/utils/screen_util.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ScreenUtil { 4 | static ScreenUtil instance = new ScreenUtil(); 5 | 6 | //设计稿的设备尺寸修改 7 | int width; 8 | int height; 9 | bool allowFontScaling; 10 | 11 | static MediaQueryData _mediaQueryData; 12 | static double _screenWidth; 13 | static double _screenHeight; 14 | static double _pixelRatio; 15 | static double _statusBarHeight; 16 | 17 | static double _bottomBarHeight; 18 | 19 | static double _textScaleFactor; 20 | 21 | ScreenUtil({ 22 | this.width = 1080, 23 | this.height = 1920, 24 | this.allowFontScaling = false, 25 | }); 26 | 27 | static ScreenUtil getInstance() { 28 | return instance; 29 | } 30 | 31 | void init(BuildContext context) { 32 | MediaQueryData mediaQuery = MediaQuery.of(context); 33 | _mediaQueryData = mediaQuery; 34 | _pixelRatio = mediaQuery.devicePixelRatio; 35 | _screenWidth = mediaQuery.size.width; 36 | _screenHeight = mediaQuery.size.height; 37 | _statusBarHeight = mediaQuery.padding.top; 38 | _bottomBarHeight = _mediaQueryData.padding.bottom; 39 | _textScaleFactor = mediaQuery.textScaleFactor; 40 | } 41 | 42 | static MediaQueryData get mediaQueryData => _mediaQueryData; 43 | 44 | ///每个逻辑像素的字体像素数,字体的缩放比例 45 | static double get textScaleFactory => _textScaleFactor; 46 | 47 | ///设备的像素密度 48 | static double get pixelRatio => _pixelRatio; 49 | 50 | ///当前设备宽度 dp 51 | static double get screenWidthDp => _screenWidth; 52 | 53 | ///当前设备高度 dp 54 | static double get screenHeightDp => _screenHeight; 55 | 56 | ///当前设备宽度 px 57 | static double get screenWidth => _screenWidth * _pixelRatio; 58 | 59 | ///当前设备高度 px 60 | static double get screenHeight => _screenHeight * _pixelRatio; 61 | 62 | ///状态栏高度 刘海屏会更高 63 | static double get statusBarHeight => _statusBarHeight * _pixelRatio; 64 | 65 | ///底部安全区距离 66 | static double get bottomBarHeight => _bottomBarHeight * _pixelRatio; 67 | 68 | ///实际的dp与设计稿px的比例 69 | get scaleWidth => _screenWidth / instance.width; 70 | 71 | get scaleHeight => _screenHeight / instance.height; 72 | 73 | ///根据设计稿的设备宽度适配 74 | ///高度也根据这个来做适配可以保证不变形 75 | setWidth(int width) => width * scaleWidth; 76 | 77 | /// 根据设计稿的设备高度适配 78 | /// 当发现设计稿中的一屏显示的与当前样式效果不符合时, 79 | /// 或者形状有差异时,高度适配建议使用此方法 80 | /// 高度适配主要针对想根据设计稿的一屏展示一样的效果 81 | setHeight(int height) => height * scaleHeight; 82 | 83 | ///字体大小适配方法 84 | ///@param fontSize 传入设计稿上字体的px , 85 | ///@param allowFontScaling 控制字体是否要根据系统的“字体大小”辅助选项来进行缩放。默认值为true。 86 | ///@param allowFontScaling Specifies whether fonts should scale to respect Text Size accessibility settings. The default is true. 87 | setSp(int fontSize) => allowFontScaling 88 | ? setWidth(fontSize) 89 | : setWidth(fontSize) / _textScaleFactor; 90 | } -------------------------------------------------------------------------------- /lib/utils/toast_utils.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:fluttertoast/fluttertoast.dart'; 3 | 4 | /* 5 | * Toast工具类 6 | * msg为 show的内容必传 7 | * */ 8 | class ToastUtils { 9 | static show(String msg, 10 | {Colors backgroundColor, 11 | double fontSize, 12 | Colors textColor, 13 | ToastGravity location, 14 | Toast toastLength}) { 15 | Fluttertoast.showToast( 16 | msg: msg, 17 | toastLength: toastLength != null ? toastLength : Toast.LENGTH_SHORT, 18 | gravity: location != null ? location : ToastGravity.BOTTOM, 19 | timeInSecForIos: 1, 20 | backgroundColor: 21 | backgroundColor != null ? backgroundColor : Colors.black, 22 | textColor: textColor != null ? textColor : Colors.white, 23 | fontSize: fontSize != null ? fontSize : 16.0); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/view/home_page.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/base/page/base_stateful_page.dart'; 3 | import 'package:flutter_sample/component/widget/bottom_navigation_widget.dart'; 4 | 5 | class HomePage extends BaseStatefulPage { 6 | @override 7 | State createState() => HomeState(); 8 | } 9 | 10 | class HomeState extends BasePageState{ 11 | 12 | @override 13 | Widget build(BuildContext context) { 14 | return new Scaffold( 15 | body: BottomNavigationWidget(), 16 | // home: NavigationKeepAlive(), 17 | ); 18 | } 19 | 20 | @override 21 | void initState() { 22 | super.initState(); 23 | } 24 | 25 | @override 26 | void didChangeDependencies() { 27 | super.didChangeDependencies(); 28 | } 29 | 30 | @override 31 | void didUpdateWidget(HomePage oldWidget) { 32 | super.didUpdateWidget(oldWidget); 33 | } 34 | 35 | @override 36 | void deactivate() { 37 | super.deactivate(); 38 | } 39 | 40 | @override 41 | void dispose() { 42 | super.dispose(); 43 | } 44 | 45 | @override 46 | String trackPageBeginMethod() { 47 | return "页面开始方法"; 48 | } 49 | 50 | @override 51 | String trackPageEndMethod() { 52 | return "页面结束方法"; 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: flutter_sample 2 | description: 王亟亟的sample 3 | 4 | # The following defines the version and build number for your application. 5 | # A version number is three numbers separated by dots, like 1.2.43 6 | # followed by an optional build number separated by a +. 7 | # Both the version and the builder number may be overridden in flutter 8 | # build by specifying --build-name and --build-number, respectively. 9 | # In Android, build-name is used as versionName while build-number used as versionCode. 10 | # Read more about Android versioning at https://developer.android.com/studio/publish/versioning 11 | # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. 12 | # Read more about iOS versioning at 13 | # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html 14 | version: 1.0.0+1 15 | 16 | environment: 17 | sdk: ">=2.1.0 <3.0.0" 18 | 19 | dependencies: 20 | flutter: 21 | sdk: flutter 22 | 23 | # The following adds the Cupertino Icons font to your application. 24 | # Use with the CupertinoIcons class for iOS style icons. 25 | cupertino_icons: ^0.1.2 26 | fluttertoast: ^3.0.1 27 | flustars: ^0.2.5 # 工具包 28 | flutter_swiper : 1.1.6 29 | fluro: "^1.4.0" 30 | shared_preferences: "^0.5.3" 31 | dev_dependencies: 32 | flutter_test: 33 | sdk: flutter 34 | 35 | 36 | # For information on the generic Dart part of this file, see the 37 | # following page: https://www.dartlang.org/tools/pub/pubspec 38 | 39 | # The following section is specific to Flutter. 40 | flutter: 41 | assets: 42 | - assets/ 43 | - assets/images/ 44 | - assets/data/mock/mock_mall.json 45 | # The following line ensures that the Material Icons font is 46 | # included with your application, so that you can use the icons in 47 | # the material Icons class. 48 | uses-material-design: true 49 | 50 | # To add assets to your application, add an assets section, like this: 51 | # assets: 52 | # - images/a_dot_burr.jpeg 53 | # - images/a_dot_ham.jpeg 54 | 55 | # An image asset can refer to one or more resolution-specific "variants", see 56 | # https://flutter.io/assets-and-images/#resolution-aware. 57 | 58 | # For details regarding adding assets from package dependencies, see 59 | # https://flutter.io/assets-and-images/#from-packages 60 | 61 | # To add custom fonts to your application, add a fonts section here, 62 | # in this "flutter" section. Each entry in this list should have a 63 | # "family" key with the font family name, and a "fonts" key with a 64 | # list giving the asset and other descriptors for the font. For 65 | # example: 66 | # fonts: 67 | # - family: Schyler 68 | # fonts: 69 | # - asset: fonts/Schyler-Regular.ttf 70 | # - asset: fonts/Schyler-Italic.ttf 71 | # style: italic 72 | # - family: Trajan Pro 73 | # fonts: 74 | # - asset: fonts/TrajanPro.ttf 75 | # - asset: fonts/TrajanPro_Bold.ttf 76 | # weight: 700 77 | # 78 | # For details regarding fonts from package dependencies, 79 | # see https://flutter.io/custom-fonts/#from-packages 80 | -------------------------------------------------------------------------------- /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 'package:flutter_sample/main.dart'; 12 | 13 | void main() { 14 | testWidgets('Counter increments smoke test', (WidgetTester tester) async { 15 | // Build our app and trigger a frame. 16 | await tester.pumpWidget(MyApp()); 17 | 18 | // Verify that our counter starts at 0. 19 | expect(find.text('0'), findsOneWidget); 20 | expect(find.text('1'), findsNothing); 21 | 22 | // Tap the '+' icon and trigger a frame. 23 | await tester.tap(find.byIcon(Icons.add)); 24 | await tester.pump(); 25 | 26 | // Verify that our counter has incremented. 27 | expect(find.text('0'), findsNothing); 28 | expect(find.text('1'), findsOneWidget); 29 | }); 30 | } 31 | --------------------------------------------------------------------------------