├── README.md ├── dartlearning ├── .gitignore ├── CHANGELOG.md ├── README.md ├── analysis_options.yaml ├── bin │ └── main.dart ├── lib │ ├── dartAnnotation.dart │ ├── dartasync.dart │ ├── dartclasses.dart │ ├── dartgenerics.dart │ ├── dartlearning.dart │ └── defferLoadLibrary.dart ├── pubspec.yaml └── test │ └── dartlearning_test.dart ├── first_app ├── .gitignore ├── .metadata ├── README.md ├── android │ ├── app │ │ ├── build.gradle │ │ └── src │ │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ │ ├── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── first_app │ │ │ │ │ └── MainActivity.java │ │ │ └── res │ │ │ │ ├── drawable │ │ │ │ └── launch_background.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ └── values │ │ │ │ └── styles.xml │ │ │ └── profile │ │ │ └── AndroidManifest.xml │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ └── settings.gradle ├── assets │ └── projector.png ├── ios │ ├── Flutter │ │ ├── AppFrameworkInfo.plist │ │ ├── Debug.xcconfig │ │ └── Release.xcconfig │ ├── Podfile │ ├── Podfile.lock │ ├── Runner.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── Runner.xcscheme │ ├── Runner.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── 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 │ │ ├── Info.plist │ │ └── main.m ├── lib │ ├── dio.dart │ ├── firstapp.dart │ ├── login │ │ ├── Services │ │ │ ├── login_api_interface.dart │ │ │ └── login_view_service.dart │ │ ├── models │ │ │ └── user.dart │ │ ├── utils │ │ │ ├── const.dart │ │ │ └── pop_up.dart │ │ ├── view_models │ │ │ └── auth_view_model.dart │ │ └── views │ │ │ ├── app_draw.dart │ │ │ ├── home_page.dart │ │ │ ├── login.dart │ │ │ ├── register.dart │ │ │ ├── root_view.dart │ │ │ └── settings.dart │ ├── main.dart │ └── mvvm │ │ ├── interfaces │ │ └── mvvm_api.dart │ │ ├── mocks │ │ └── mocks.dart │ │ ├── models │ │ ├── character.dart │ │ ├── film.dart │ │ └── planet.dart │ │ ├── services │ │ └── APIService.dart │ │ ├── utils │ │ └── styles.dart │ │ ├── view_models │ │ └── main_page_view_model.dart │ │ └── views │ │ ├── mvvm_sample_view.dart │ │ └── widgets │ │ ├── characters_list_item.dart │ │ ├── characters_panel.dart │ │ ├── films_list_item.dart │ │ ├── films_panel.dart │ │ ├── no_internet_connection.dart │ │ ├── planets_list_item.dart │ │ └── planets_panel.dart ├── pubspec.lock ├── pubspec.yaml └── test │ └── widget_test.dart ├── flutter_sample ├── .gitignore ├── .metadata ├── README.md ├── android │ ├── .project │ ├── .settings │ │ └── org.eclipse.buildship.core.prefs │ ├── app │ │ ├── build.gradle │ │ └── src │ │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ │ ├── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── flutter_sample │ │ │ │ │ └── MainActivity.java │ │ │ └── res │ │ │ │ ├── drawable │ │ │ │ └── launch_background.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ └── values │ │ │ │ └── styles.xml │ │ │ └── profile │ │ │ └── AndroidManifest.xml │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ └── settings.gradle ├── assets │ ├── icon_img.png │ └── welcome.png ├── ios │ ├── Flutter │ │ ├── AppFrameworkInfo.plist │ │ ├── Debug.xcconfig │ │ └── Release.xcconfig │ ├── Podfile │ ├── Podfile.lock │ ├── Runner.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── Runner.xcscheme │ ├── Runner.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── 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 │ │ ├── Info.plist │ │ └── main.m ├── lib │ ├── main.dart │ └── sample_app │ │ ├── helpers │ │ ├── check_version.dart │ │ ├── custom_transition.dart │ │ ├── life_cycle_observer.dart │ │ ├── routes │ │ │ └── routes.dart │ │ └── toast.dart │ │ ├── home │ │ ├── character_item.dart │ │ ├── characters_list.dart │ │ ├── films_item.dart │ │ ├── films_list.dart │ │ ├── home_page.dart │ │ ├── models │ │ │ ├── characters.dart │ │ │ ├── films.dart │ │ │ └── planets.dart │ │ ├── no_internet_connection.dart │ │ ├── planets_item.dart │ │ ├── planets_list.dart │ │ └── service │ │ │ ├── home_page_api.dart │ │ │ ├── home_page_service.dart │ │ │ └── home_page_view_model.dart │ │ ├── login │ │ └── login_view.dart │ │ ├── main │ │ ├── center_nav.dart │ │ ├── main_page_view.dart │ │ └── main_view.dart │ │ ├── news │ │ └── news_page.dart │ │ ├── post │ │ └── post_page.dart │ │ ├── user │ │ ├── models │ │ │ └── update_model.dart │ │ ├── update_page.dart │ │ ├── user_page.dart │ │ └── views │ │ │ └── paint_view.dart │ │ └── wealth │ │ └── wealth_page.dart ├── pubspec.lock ├── pubspec.yaml └── test │ └── widget_test.dart ├── flutter_shuqi-master ├── .gitignore ├── .metadata ├── README.md ├── android │ ├── app │ │ ├── build.gradle │ │ └── src │ │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ │ ├── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── shuqi │ │ │ │ │ └── MainActivity.java │ │ │ └── res │ │ │ │ ├── drawable │ │ │ │ └── launch_background.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ └── values │ │ │ │ └── styles.xml │ │ │ └── profile │ │ │ └── AndroidManifest.xml │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ └── settings.gradle ├── img │ ├── 2.0x │ │ ├── actionbar_checkin.png │ │ ├── actionbar_search.png │ │ ├── aliuser_title_back_normal.9.png │ │ ├── arrow_right.png │ │ ├── bookshelf_add.png │ │ ├── bookshelf_bg.png │ │ ├── bookshelf_cloud_0.png │ │ ├── bookshelf_cloud_1.png │ │ ├── bookshelf_cloud_2.png │ │ ├── bookshelf_cloud_3.png │ │ ├── bookshelf_continue_read.png │ │ ├── detail_chapter.png │ │ ├── detail_down.png │ │ ├── detail_fold_bg.png │ │ ├── detail_latest.png │ │ ├── detail_star.png │ │ ├── detail_star_half.png │ │ ├── detail_up.png │ │ ├── detail_write_comment.png │ │ ├── home_search.png │ │ ├── home_tip.png │ │ ├── icon_menu_catalog.png │ │ ├── icon_menu_share.png │ │ ├── me_action.png │ │ ├── me_buy.png │ │ ├── me_comment.png │ │ ├── me_coupon.png │ │ ├── me_date.png │ │ ├── me_favorite.png │ │ ├── me_feedback.png │ │ ├── me_gift.png │ │ ├── me_night.png │ │ ├── me_record.png │ │ ├── me_setting.png │ │ ├── me_theme.png │ │ ├── me_vip.png │ │ ├── me_wallet.png │ │ ├── menu_category.png │ │ ├── menu_complete.png │ │ ├── menu_publish.png │ │ ├── menu_rank.png │ │ ├── menu_vip.png │ │ ├── placeholder_avatar.png │ │ ├── pub_back_gray.png │ │ ├── pub_back_white.png │ │ ├── read_bg.png │ │ ├── read_icon_brightness.png │ │ ├── read_icon_catalog.png │ │ ├── read_icon_chapter_next.png │ │ ├── read_icon_chapter_previous.png │ │ ├── read_icon_font.png │ │ ├── read_icon_more.png │ │ ├── read_icon_setting.png │ │ ├── read_icon_vip.png │ │ ├── read_icon_voice.png │ │ ├── read_more_detail.png │ │ ├── reader_battery.png │ │ ├── tab_bookshelf_n.png │ │ ├── tab_bookshelf_p.png │ │ ├── tab_bookstore_n.png │ │ ├── tab_bookstore_p.png │ │ ├── tab_me_n.png │ │ ├── tab_me_p.png │ │ ├── tab_writer_n.png │ │ └── tab_writer_p.png │ ├── actionbar_checkin.png │ ├── actionbar_search.png │ ├── aliuser_title_back_normal.9.png │ ├── arrow_right.png │ ├── bookshelf_add.png │ ├── bookshelf_bg.png │ ├── bookshelf_cloud_0.png │ ├── bookshelf_cloud_1.png │ ├── bookshelf_cloud_2.png │ ├── bookshelf_cloud_3.png │ ├── bookshelf_continue_read.png │ ├── detail_chapter.png │ ├── detail_down.png │ ├── detail_fold_bg.png │ ├── detail_latest.png │ ├── detail_star.png │ ├── detail_star_half.png │ ├── detail_up.png │ ├── detail_write_comment.png │ ├── home_search.png │ ├── home_tip.png │ ├── icon_menu_catalog.png │ ├── icon_menu_share.png │ ├── me_action.png │ ├── me_buy.png │ ├── me_comment.png │ ├── me_coupon.png │ ├── me_date.png │ ├── me_favorite.png │ ├── me_feedback.png │ ├── me_gift.png │ ├── me_night.png │ ├── me_record.png │ ├── me_setting.png │ ├── me_theme.png │ ├── me_vip.png │ ├── me_wallet.png │ ├── menu_category.png │ ├── menu_complete.png │ ├── menu_publish.png │ ├── menu_rank.png │ ├── menu_vip.png │ ├── placeholder_avatar.png │ ├── pub_back_gray.png │ ├── pub_back_white.png │ ├── read_bg.png │ ├── read_icon_brightness.png │ ├── read_icon_catalog.png │ ├── read_icon_chapter_next.png │ ├── read_icon_chapter_previous.png │ ├── read_icon_font.png │ ├── read_icon_more.png │ ├── read_icon_setting.png │ ├── read_icon_vip.png │ ├── read_icon_voice.png │ ├── read_more_detail.png │ ├── reader_battery.png │ ├── tab_bookshelf_n.png │ ├── tab_bookshelf_p.png │ ├── tab_bookstore_n.png │ ├── tab_bookstore_p.png │ ├── tab_me_n.png │ ├── tab_me_p.png │ ├── tab_writer_n.png │ └── tab_writer_p.png ├── ios │ ├── Flutter │ │ ├── AppFrameworkInfo.plist │ │ ├── Debug.xcconfig │ │ ├── Release.xcconfig │ │ └── flutter_export_environment.sh │ ├── Podfile │ ├── Podfile.lock │ ├── Runner.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── Runner.xcscheme │ ├── Runner.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── WorkspaceSettings.xcsettings │ └── Runner │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── Assets.xcassets │ │ ├── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ ├── Icon-1024.png │ │ │ ├── Icon-120.png │ │ │ ├── Icon-121.png │ │ │ ├── Icon-180.png │ │ │ ├── Icon-40.png │ │ │ ├── Icon-58.png │ │ │ ├── Icon-60.png │ │ │ ├── Icon-80.png │ │ │ └── Icon-87.png │ │ ├── Contents.json │ │ └── LaunchImage.launchimage │ │ │ ├── 1125_2436.png │ │ │ ├── 1242_2208.png │ │ │ ├── 640_1136.png │ │ │ ├── 640_960.png │ │ │ ├── 750_1334.png │ │ │ └── Contents.json │ │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ │ ├── Info.plist │ │ └── main.m ├── lib │ ├── app │ │ ├── app_navigator.dart │ │ ├── app_scene.dart │ │ ├── center_nav.dart │ │ ├── constant.dart │ │ ├── custom_transition.dart │ │ ├── post_page.dart │ │ ├── request.dart │ │ ├── root_scene.dart │ │ ├── sq_color.dart │ │ └── user_manager.dart │ ├── bookshelf │ │ ├── bookshelf_cloud_widget.dart │ │ ├── bookshelf_header.dart │ │ ├── bookshelf_item_view.dart │ │ └── bookshelf_scene.dart │ ├── global.dart │ ├── home │ │ ├── home_banner.dart │ │ ├── home_list_view.dart │ │ ├── home_menu.dart │ │ ├── home_model.dart │ │ ├── home_novel_cover_view.dart │ │ ├── home_scene.dart │ │ ├── home_section_view.dart │ │ ├── novel_cell.dart │ │ ├── novel_first_hybird_card.dart │ │ ├── novel_four_grid_view.dart │ │ ├── novel_grid_item.dart │ │ ├── novel_normal_card.dart │ │ └── novel_second_hybird_card.dart │ ├── main.dart │ ├── me │ │ ├── code_button.dart │ │ ├── login_scene.dart │ │ ├── me_cell.dart │ │ ├── me_header.dart │ │ ├── me_scene.dart │ │ ├── setting_scene.dart │ │ └── web_scene.dart │ ├── model │ │ ├── article.dart │ │ ├── chapter.dart │ │ ├── novel.dart │ │ └── novel_comment.dart │ ├── novel_detail │ │ ├── novel_comment_cell.dart │ │ ├── novel_detail_cell.dart │ │ ├── novel_detail_header.dart │ │ ├── novel_detail_recommend_view.dart │ │ ├── novel_detail_scene.dart │ │ ├── novel_detail_toolbar.dart │ │ └── novel_summary_view.dart │ ├── public.dart │ ├── reader │ │ ├── article_provider.dart │ │ ├── battery_view.dart │ │ ├── reader_config.dart │ │ ├── reader_menu.dart │ │ ├── reader_overlayer.dart │ │ ├── reader_page_agent.dart │ │ ├── reader_scene.dart │ │ ├── reader_utils.dart │ │ └── reader_view.dart │ ├── utility │ │ ├── event_bus.dart │ │ ├── screen.dart │ │ ├── styles.dart │ │ ├── toast.dart │ │ └── utility.dart │ ├── vip │ │ ├── character_item.dart │ │ ├── characters_list.dart │ │ ├── films_item.dart │ │ ├── films_list.dart │ │ ├── home_page.dart │ │ ├── models │ │ │ ├── characters.dart │ │ │ ├── films.dart │ │ │ └── planets.dart │ │ ├── no_internet_connection.dart │ │ ├── planets_item.dart │ │ ├── planets_list.dart │ │ ├── service │ │ │ ├── home_page_api.dart │ │ │ ├── home_page_service.dart │ │ │ └── home_page_view_model.dart │ │ └── vip_page.dart │ └── widget │ │ ├── novel_cover_image.dart │ │ └── novel_cover_view.dart ├── mock │ ├── article_1000.json │ ├── article_1001.json │ ├── article_1002.json │ ├── article_1003.json │ ├── article_1004.json │ ├── article_1005.json │ ├── article_1006.json │ ├── bookshelf.json │ ├── catalog.json │ ├── home_cartoon.json │ ├── home_excellent.json │ ├── home_female.json │ ├── home_male.json │ ├── login.json │ ├── novel_comment.json │ ├── novel_detail.json │ ├── novel_recommend.json │ └── sms.json ├── pubspec.lock ├── pubspec.yaml ├── res │ └── values │ │ └── strings_en.arb └── screenshot │ ├── android_0.png │ ├── android_1.png │ ├── android_2.png │ ├── ios_0.png │ ├── ios_1.png │ └── ios_2.png ├── helloworld ├── .gitignore ├── .gradle │ ├── 5.1.1 │ │ ├── fileChanges │ │ │ └── last-build.bin │ │ ├── fileHashes │ │ │ └── fileHashes.lock │ │ └── gc.properties │ ├── buildOutputCleanup │ │ ├── buildOutputCleanup.lock │ │ └── cache.properties │ └── vcs-1 │ │ └── gc.properties ├── .metadata ├── README.md ├── android │ ├── .project │ ├── .settings │ │ └── org.eclipse.buildship.core.prefs │ ├── app │ │ ├── build.gradle │ │ └── src │ │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ │ ├── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── helloworld │ │ │ │ │ └── MainActivity.java │ │ │ └── res │ │ │ │ ├── drawable │ │ │ │ └── launch_background.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ └── values │ │ │ │ └── styles.xml │ │ │ └── profile │ │ │ └── AndroidManifest.xml │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ └── settings.gradle ├── ios │ ├── Flutter │ │ ├── AppFrameworkInfo.plist │ │ ├── Debug.xcconfig │ │ └── Release.xcconfig │ ├── Podfile │ ├── Podfile.lock │ ├── Runner.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── Runner.xcscheme │ ├── Runner.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── 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 │ │ ├── FlutterHomeViewController.h │ │ ├── FlutterHomeViewController.m │ │ ├── FlutterViewController+MethodChannel.h │ │ ├── FlutterViewController+MethodChannel.m │ │ ├── Info.plist │ │ ├── NativeViewController.h │ │ ├── NativeViewController.m │ │ ├── Runner.entitlements │ │ ├── SampleViewControl.h │ │ ├── SampleViewControl.m │ │ ├── SampleViewFactory.h │ │ ├── SampleViewFactory.m │ │ └── main.m ├── lib │ ├── asyncprogram │ │ ├── dart_async.dart │ │ └── dart_isolate.dart │ ├── button │ │ └── dart_button.dart │ ├── dart_layout │ │ ├── dart_Positioned.dart │ │ ├── dart_align.dart │ │ ├── dart_column.dart │ │ ├── dart_container.dart │ │ ├── dart_expanded.dart │ │ ├── dart_flow.dart │ │ ├── dart_padding.dart │ │ ├── dart_row.dart │ │ ├── dart_stack.dart │ │ ├── dart_table.dart │ │ ├── dart_transform.dart │ │ └── dart_wrap.dart │ ├── data_noti │ │ ├── dart_event_bus.dart │ │ ├── dart_noti.dart │ │ └── inherited_widget.dart │ ├── database │ │ ├── dart_file.dart │ │ ├── dart_shared_preferences.dart │ │ ├── dart_sqflite.dart │ │ └── sql_helper.dart │ ├── debug_develop │ │ ├── config.dart │ │ └── debug_env.dart │ ├── device_channel │ │ ├── dart_native_navigation.dart │ │ ├── dart_native_view.dart │ │ └── method_channel.dart │ ├── dio │ │ └── dart_dio_interceptor.dart │ ├── form │ │ ├── dart_form.dart │ │ └── dart_textfiled.dart │ ├── gesture_touch │ │ ├── dart_gesture.dart │ │ ├── dart_multi_gesture.dart │ │ └── touch_listener.dart │ ├── json │ │ └── dart_json_to_object.dart │ ├── life_cycle │ │ └── life_cycle_page.dart │ ├── list │ │ ├── dart_custom_scroll_view.dart │ │ ├── dart_grid_view.dart │ │ ├── dart_grid_view_builder.dart │ │ ├── dart_list_view.dart │ │ ├── dart_list_view_builder.dart │ │ ├── dart_list_view_separated.dart │ │ ├── dart_refresh_list.dart │ │ └── dart_scrollview.dart │ ├── main.dart │ ├── main_dev.dart │ ├── my-assets │ │ ├── dart_assets.dart │ │ ├── localizable_strings.dart │ │ ├── mydata.json │ │ ├── myimg.png │ │ └── timg.gif │ ├── navigation │ │ └── dart_navigation.dart │ ├── orientation │ │ └── orientation_builder.dart │ ├── state_manage │ │ ├── muti_provider.dart │ │ └── state_provider.dart │ ├── theme_text │ │ ├── dart_text.dart │ │ ├── dart_theme.dart │ │ └── iconfont.ttf │ ├── third_service │ │ ├── dart_camera.dart │ │ ├── dart_location.dart │ │ ├── dart_qq_login.dart │ │ ├── dart_xg_push.dart │ │ └── flutter_push_plugin.dart │ └── widget │ │ ├── dart_animation.dart │ │ ├── dart_animation_builder.dart │ │ ├── dart_animation_widget.dart │ │ ├── dart_custom_widget.dart │ │ ├── dart_hero_animation.dart │ │ ├── dart_layout.dart │ │ ├── dart_manage_subwidget.dart │ │ ├── dart_paniter.dart │ │ ├── dart_widget.dart │ │ └── theme_demo.dart ├── pubspec.lock ├── pubspec.yaml ├── res │ └── values │ │ ├── strings_en.arb │ │ └── strings_zh.arb └── test │ └── widget_test.dart └── shoping_cart ├── .gitignore ├── .metadata ├── README.md ├── android ├── app │ ├── build.gradle │ └── src │ │ ├── debug │ │ └── AndroidManifest.xml │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── shoping_cart │ │ │ │ └── MainActivity.java │ │ └── res │ │ │ ├── drawable │ │ │ └── launch_background.xml │ │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxxhdpi │ │ │ └── ic_launcher.png │ │ │ └── values │ │ │ └── styles.xml │ │ └── profile │ │ └── AndroidManifest.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ └── gradle-wrapper.properties └── settings.gradle ├── ios ├── Flutter │ ├── AppFrameworkInfo.plist │ ├── Debug.xcconfig │ └── Release.xcconfig ├── 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 │ ├── Info.plist │ └── main.m ├── lib ├── main.dart └── shopping_cart │ └── shopping_cart_origin_model.dart ├── pubspec.lock ├── pubspec.yaml └── test └── widget_test.dart /README.md: -------------------------------------------------------------------------------- 1 | # Flutter-Learning 2 | Flutter 3 | 4 | Flutter 学习笔记 5 | 6 | 博客地址:[www.lingjye.com](https://www.lingjye.com?_blank) 7 | -------------------------------------------------------------------------------- /dartlearning/.gitignore: -------------------------------------------------------------------------------- 1 | # Files and directories created by pub 2 | .dart_tool/ 3 | .packages 4 | # Remove the following pattern if you wish to check in your lock file 5 | pubspec.lock 6 | 7 | # Conventional directory for build outputs 8 | build/ 9 | 10 | # Directory created by dartdoc 11 | doc/api/ 12 | -------------------------------------------------------------------------------- /dartlearning/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 1.0.0 2 | 3 | - Initial version, created by Stagehand 4 | -------------------------------------------------------------------------------- /dartlearning/README.md: -------------------------------------------------------------------------------- 1 | A sample command-line application. 2 | 3 | Created from templates made available by Stagehand under a BSD-style 4 | [license](https://github.com/dart-lang/stagehand/blob/master/LICENSE). 5 | -------------------------------------------------------------------------------- /dartlearning/analysis_options.yaml: -------------------------------------------------------------------------------- 1 | # Defines a default set of lint rules enforced for 2 | # projects at Google. For details and rationale, 3 | # see https://github.com/dart-lang/pedantic#enabled-lints. 4 | include: package:pedantic/analysis_options.yaml 5 | 6 | # For lint rules and documentation, see http://dart-lang.github.io/linter/lints. 7 | # Uncomment to specify additional rules. 8 | # linter: 9 | # rules: 10 | # - camel_case_types 11 | 12 | analyzer: 13 | # exclude: 14 | # - path/to/excluded/files/** 15 | -------------------------------------------------------------------------------- /dartlearning/lib/dartAnnotation.dart: -------------------------------------------------------------------------------- 1 | // 自定义注解 必须在最上方 2 | library todo; 3 | 4 | class Todo { 5 | final String who; 6 | final String what; 7 | 8 | const Todo(this.who, this.what); 9 | } 10 | -------------------------------------------------------------------------------- /dartlearning/lib/defferLoadLibrary.dart: -------------------------------------------------------------------------------- 1 | 2 | // 延迟加载 3 | void printHello() { 4 | print('deffer hello'); 5 | } -------------------------------------------------------------------------------- /dartlearning/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: dartlearning 2 | description: A sample command-line application. 3 | # version: 1.0.0 4 | # homepage: https://www.example.com 5 | # author: lingjye 6 | 7 | environment: 8 | sdk: '>=2.2.0 <3.0.0' 9 | 10 | #dependencies: 11 | # path: ^1.4.1 12 | 13 | dev_dependencies: 14 | pedantic: ^1.0.0 15 | test: ^1.0.0 16 | -------------------------------------------------------------------------------- /dartlearning/test/dartlearning_test.dart: -------------------------------------------------------------------------------- 1 | import 'package:dartlearning/dartlearning.dart'; 2 | import 'package:test/test.dart'; 3 | 4 | void main() { 5 | test('calculate', () { 6 | expect(calculate(), 42); 7 | }); 8 | } 9 | -------------------------------------------------------------------------------- /first_app/.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: 7a4c33425ddd78c54aba07d86f3f9a4a0051769b 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /first_app/README.md: -------------------------------------------------------------------------------- 1 | # first_app 2 | 3 | A new Flutter project. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) 13 | 14 | For help getting started with Flutter, view our 15 | [online documentation](https://flutter.dev/docs), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /first_app/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /first_app/android/app/src/main/java/com/example/first_app/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.first_app; 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 | -------------------------------------------------------------------------------- /first_app/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /first_app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/first_app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /first_app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/first_app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /first_app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/first_app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /first_app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/first_app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /first_app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/first_app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /first_app/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /first_app/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /first_app/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 | -------------------------------------------------------------------------------- /first_app/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | -------------------------------------------------------------------------------- /first_app/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 | -------------------------------------------------------------------------------- /first_app/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 | -------------------------------------------------------------------------------- /first_app/assets/projector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/first_app/assets/projector.png -------------------------------------------------------------------------------- /first_app/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 | -------------------------------------------------------------------------------- /first_app/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /first_app/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /first_app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /first_app/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /first_app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /first_app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildSystemType 6 | Original 7 | 8 | 9 | -------------------------------------------------------------------------------- /first_app/ios/Runner/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : FlutterAppDelegate 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /first_app/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 | -------------------------------------------------------------------------------- /first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/first_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /first_app/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 | -------------------------------------------------------------------------------- /first_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/first_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /first_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/first_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /first_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/first_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /first_app/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. -------------------------------------------------------------------------------- /first_app/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 | -------------------------------------------------------------------------------- /first_app/lib/login/Services/login_api_interface.dart: -------------------------------------------------------------------------------- 1 | import 'package:http/http.dart' as http; 2 | import 'package:http/io_client.dart' as inner; 3 | import 'dart:io'; 4 | 5 | enum HttpMethod { 6 | get, 7 | post, 8 | put, 9 | delete 10 | } 11 | 12 | abstract class LoginApi { 13 | Future get(String url); 14 | Future delete(String url); 15 | Future post(String url, dynamic data, {String bodyContentType}); 16 | Future put(String url, dynamic data); 17 | Future uploadFile(String url, File file, String name); 18 | Future getHttpResponse(String url, {dynamic body, Map headers, HttpMethod method = HttpMethod.get}); 19 | inner.IOClient getClient(); 20 | } 21 | 22 | const String apiUrl = 'https://reqres.in/api/users/2'; 23 | const bool devMode = false; 24 | const double textScaleFactor = 1.0; 25 | 26 | enum AlertAction { 27 | cancel, 28 | discard, 29 | disagree, 30 | aree 31 | } 32 | -------------------------------------------------------------------------------- /first_app/lib/login/models/user.dart: -------------------------------------------------------------------------------- 1 | import 'package:json_annotation/json_annotation.dart'; 2 | 3 | @JsonSerializable() 4 | class User { 5 | int id; 6 | @JsonKey(name: 'first_name') 7 | String firstname; 8 | @JsonKey(name: 'last_name') 9 | String lastname; 10 | String avatar; 11 | @JsonKey(nullable: true) 12 | String token; 13 | 14 | User({ 15 | this.id, 16 | this.firstname, 17 | this.lastname, 18 | this.avatar, 19 | this.token 20 | }); 21 | 22 | User.fromJson(Mapmap) { 23 | id = map['id'] as int; 24 | firstname = map['first_name']; 25 | lastname = map['last_name']; 26 | avatar = map['avatar']; 27 | token = map['token']; 28 | } 29 | 30 | Map toJson () { 31 | return { 32 | 'id': id, 33 | 'first_name': firstname, 34 | 'last_name': lastname, 35 | 'avatar': avatar, 36 | 'token': token 37 | }; 38 | } 39 | 40 | @override 41 | String toString() { 42 | // TODO: implement toString 43 | return '$firstname $lastname'.toString(); 44 | } 45 | 46 | 47 | } -------------------------------------------------------------------------------- /first_app/lib/login/utils/const.dart: -------------------------------------------------------------------------------- 1 | const double textScaleFactor = 1.0; 2 | const bool devModel = false; 3 | -------------------------------------------------------------------------------- /first_app/lib/login/utils/pop_up.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:native_widgets/native_widgets.dart'; 3 | 4 | void showAlertPopup(BuildContext context, String title, String detail) async { 5 | void showDemoDialog({BuildContext context, Widget child}) { 6 | showDialog( 7 | context: context, 8 | barrierDismissible: false, 9 | builder: (BuildContext contenxt) => child 10 | ); 11 | } 12 | 13 | return showDemoDialog ( 14 | context: context, 15 | child: NativeDialog( 16 | title: Text(title), 17 | content: Text(detail), 18 | actions: [ 19 | NativeDialogAction( 20 | text: Text('OK'), 21 | isDestructive: false, 22 | onPressed: ()=> Navigator.pop(context), 23 | ), 24 | ], 25 | ) 26 | ); 27 | } -------------------------------------------------------------------------------- /first_app/lib/login/views/app_draw.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:first_app/login/utils/const.dart'; 3 | import 'package:scoped_model/scoped_model.dart'; 4 | import 'package:first_app/login/view_models/auth_view_model.dart'; 5 | 6 | class AppDrawer extends StatefulWidget { 7 | AppDrawer({Key key}) : super(key: key); 8 | 9 | _AppDrawerState createState() => _AppDrawerState(); 10 | } 11 | 12 | class _AppDrawerState extends State { 13 | @override 14 | Widget build(BuildContext context) { 15 | final _auth = ScopedModel.of(context, rebuildOnChange: true); 16 | return Drawer( 17 | child: SafeArea( 18 | child: ListView( 19 | physics: AlwaysScrollableScrollPhysics(), 20 | children: [ 21 | ListTile( 22 | title: Text('退出', textScaleFactor: textScaleFactor,), 23 | onTap: () { 24 | _auth.logout(); 25 | }, 26 | ), 27 | ], 28 | ), 29 | ), 30 | ); 31 | } 32 | } -------------------------------------------------------------------------------- /first_app/lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:first_app/dio.dart'; 2 | import 'package:first_app/firstapp.dart'; 3 | import 'package:first_app/login/views/root_view.dart'; 4 | import 'package:first_app/mvvm/views/mvvm_sample_view.dart'; 5 | import 'package:flutter/material.dart'; 6 | import 'package:flutter/rendering.dart'; 7 | /** 8 | * 中文文档:https://flutterchina.club/get-started/codelab/ 9 | */ 10 | 11 | void main(){ 12 | 13 | runApp( 14 | 15 | // MyApp() 16 | // DioSampleApp() 17 | MVVMSampleViewApp() 18 | // LoginSampleApp() 19 | 20 | ); 21 | 22 | debugPaintBaselinesEnabled = true; 23 | debugPaintLayerBordersEnabled = true; 24 | } 25 | 26 | -------------------------------------------------------------------------------- /first_app/lib/mvvm/interfaces/mvvm_api.dart: -------------------------------------------------------------------------------- 1 | import 'package:first_app/mvvm/models/character.dart'; 2 | import 'package:first_app/mvvm/models/film.dart'; 3 | import 'package:first_app/mvvm/models/planet.dart'; 4 | 5 | abstract class MVVMApi { 6 | Future> getFilms(); 7 | Future> getCharacters(); 8 | Future> getPlanets(); 9 | } -------------------------------------------------------------------------------- /first_app/lib/mvvm/mocks/mocks.dart: -------------------------------------------------------------------------------- 1 | import 'package:first_app/mvvm/interfaces/mvvm_api.dart'; 2 | import 'package:mockito/mockito.dart'; 3 | import 'package:http/http.dart' as http; 4 | 5 | class MockClent extends Mock implements http.Client {} 6 | class MockApiService extends Mock implements MVVMApi {} -------------------------------------------------------------------------------- /first_app/lib/mvvm/models/character.dart: -------------------------------------------------------------------------------- 1 | class Character { 2 | String name, birthYear, gender, eyeColor; 3 | int height; 4 | 5 | Character({ 6 | this.name, 7 | this.birthYear, 8 | this.gender, 9 | this.eyeColor 10 | }); 11 | 12 | Character.fromMap(Map map) { 13 | name = map['name']; 14 | birthYear = map['birth_year']; 15 | gender = map['gender']; 16 | height = int.parse(map['height']); 17 | eyeColor = map['eye_color']; 18 | } 19 | } -------------------------------------------------------------------------------- /first_app/lib/mvvm/models/film.dart: -------------------------------------------------------------------------------- 1 | class Film { 2 | String title, openingCrawl, director, producer; 3 | DateTime releaseDate; 4 | 5 | Film({ 6 | this.title, 7 | this.openingCrawl, 8 | this.director, 9 | this.producer, 10 | this.releaseDate, 11 | }); 12 | 13 | Film.fromMap(Mapmap) { 14 | title = map['title']; 15 | openingCrawl = map['openining_crawlt']; 16 | director = map['director']; 17 | producer = map['producer']; 18 | releaseDate = DateTime.parse(map['release_date']); 19 | } 20 | 21 | } -------------------------------------------------------------------------------- /first_app/lib/mvvm/models/planet.dart: -------------------------------------------------------------------------------- 1 | class Planet { 2 | String name, climate, terrain, gravity, population; 3 | int diameter; 4 | 5 | Planet({ 6 | this.name, 7 | this.climate, 8 | this.terrain, 9 | this.gravity, 10 | this.population 11 | }); 12 | 13 | Planet.fromMap(Map map) { 14 | name = map['name']; 15 | climate = map['climate']; 16 | terrain = map['terrain']; 17 | diameter = int.parse(map['diameter']); 18 | gravity = map['gravity']; 19 | population = map['population']; 20 | } 21 | } -------------------------------------------------------------------------------- /first_app/lib/mvvm/utils/styles.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class AppStyle { 4 | static final double titleFontSize = 16.0; 5 | static final double subTitleFontSize = 14.0; 6 | static final Color titleColor = Colors.black.withAlpha(220); 7 | static final Color subTitleColor = Colors.black87; 8 | } -------------------------------------------------------------------------------- /first_app/lib/mvvm/views/widgets/no_internet_connection.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class NoInternetConnection extends StatelessWidget { 4 | final VoidCallback action; 5 | const NoInternetConnection({Key key, @required this.action}) : super(key: key); 6 | 7 | @override 8 | Widget build(BuildContext context) { 9 | return Column( 10 | mainAxisAlignment: MainAxisAlignment.center, 11 | children: [ 12 | Text( 13 | 'Failed Connect to the internet!', 14 | style: TextStyle( 15 | color: Colors.grey, 16 | fontSize: 16.0, 17 | ), 18 | textAlign: TextAlign.center, 19 | ), 20 | Padding( 21 | padding: const EdgeInsets.only(top: 18.0), 22 | child: FloatingActionButton( 23 | backgroundColor: Theme.of(context).primaryColorLight, 24 | child: Icon(Icons.refresh, size: 30.0), 25 | onPressed: action, 26 | ), 27 | ) 28 | ], 29 | ); 30 | } 31 | } -------------------------------------------------------------------------------- /flutter_sample/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: 7a4c33425ddd78c54aba07d86f3f9a4a0051769b 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /flutter_sample/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.dev/docs/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) 13 | 14 | For help getting started with Flutter, view our 15 | [online documentation](https://flutter.dev/docs), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /flutter_sample/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 | -------------------------------------------------------------------------------- /flutter_sample/android/.settings/org.eclipse.buildship.core.prefs: -------------------------------------------------------------------------------- 1 | arguments= 2 | auto.sync=false 3 | build.scans.enabled=false 4 | connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(5.4)) 5 | connection.project.dir= 6 | eclipse.preferences.version=1 7 | gradle.user.home= 8 | java.home= 9 | jvm.arguments= 10 | offline.mode=false 11 | override.workspace.settings=true 12 | show.console.view=true 13 | show.executions.view=true 14 | -------------------------------------------------------------------------------- /flutter_sample/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /flutter_sample/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 | -------------------------------------------------------------------------------- /flutter_sample/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /flutter_sample/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_sample/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /flutter_sample/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_sample/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /flutter_sample/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_sample/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /flutter_sample/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_sample/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /flutter_sample/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_sample/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /flutter_sample/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /flutter_sample/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /flutter_sample/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | google() 4 | jcenter() 5 | } 6 | 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:3.4.2' 9 | } 10 | } 11 | 12 | allprojects { 13 | repositories { 14 | google() 15 | jcenter() 16 | } 17 | } 18 | 19 | rootProject.buildDir = '../build' 20 | subprojects { 21 | project.buildDir = "${rootProject.buildDir}/${project.name}" 22 | } 23 | subprojects { 24 | project.evaluationDependsOn(':app') 25 | } 26 | 27 | task clean(type: Delete) { 28 | delete rootProject.buildDir 29 | } 30 | -------------------------------------------------------------------------------- /flutter_sample/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | -------------------------------------------------------------------------------- /flutter_sample/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip 7 | -------------------------------------------------------------------------------- /flutter_sample/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() 4 | 5 | def plugins = new Properties() 6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') 7 | if (pluginsFile.exists()) { 8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } 9 | } 10 | 11 | plugins.each { name, path -> 12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() 13 | include ":$name" 14 | project(":$name").projectDir = pluginDirectory 15 | } 16 | -------------------------------------------------------------------------------- /flutter_sample/assets/icon_img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_sample/assets/icon_img.png -------------------------------------------------------------------------------- /flutter_sample/assets/welcome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_sample/assets/welcome.png -------------------------------------------------------------------------------- /flutter_sample/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 | -------------------------------------------------------------------------------- /flutter_sample/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /flutter_sample/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /flutter_sample/ios/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Flutter (1.0.0) 3 | - flutter_downloader (0.0.1): 4 | - Flutter 5 | - shared_preferences (0.0.1): 6 | - Flutter 7 | 8 | DEPENDENCIES: 9 | - Flutter (from `.symlinks/flutter/ios`) 10 | - flutter_downloader (from `.symlinks/plugins/flutter_downloader/ios`) 11 | - shared_preferences (from `.symlinks/plugins/shared_preferences/ios`) 12 | 13 | EXTERNAL SOURCES: 14 | Flutter: 15 | :path: ".symlinks/flutter/ios" 16 | flutter_downloader: 17 | :path: ".symlinks/plugins/flutter_downloader/ios" 18 | shared_preferences: 19 | :path: ".symlinks/plugins/shared_preferences/ios" 20 | 21 | SPEC CHECKSUMS: 22 | Flutter: 58dd7d1b27887414a370fcccb9e645c08ffd7a6a 23 | flutter_downloader: 058b9c41564a90500f67f3e432e3524613a7fd83 24 | shared_preferences: 1feebfa37bb57264736e16865e7ffae7fc99b523 25 | 26 | PODFILE CHECKSUM: aff02bfeed411c636180d6812254b2daeea14d09 27 | 28 | COCOAPODS: 1.7.2 29 | -------------------------------------------------------------------------------- /flutter_sample/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /flutter_sample/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /flutter_sample/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /flutter_sample/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildSystemType 6 | Original 7 | 8 | 9 | -------------------------------------------------------------------------------- /flutter_sample/ios/Runner/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : FlutterAppDelegate 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /flutter_sample/ios/Runner/AppDelegate.m: -------------------------------------------------------------------------------- 1 | #include "AppDelegate.h" 2 | #include "GeneratedPluginRegistrant.h" 3 | 4 | @implementation AppDelegate 5 | 6 | - (BOOL)application:(UIApplication *)application 7 | didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 8 | [GeneratedPluginRegistrant registerWithRegistry:self]; 9 | // Override point for customization after application launch. 10 | return [super application:application didFinishLaunchingWithOptions:launchOptions]; 11 | } 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /flutter_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /flutter_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /flutter_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /flutter_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /flutter_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /flutter_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /flutter_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /flutter_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /flutter_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /flutter_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /flutter_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /flutter_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /flutter_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /flutter_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /flutter_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_sample/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /flutter_sample/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /flutter_sample/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_sample/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /flutter_sample/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_sample/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /flutter_sample/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_sample/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /flutter_sample/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /flutter_sample/ios/Runner/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char* argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /flutter_sample/lib/sample_app/helpers/life_cycle_observer.dart: -------------------------------------------------------------------------------- 1 | import 'package:native_widgets/native_widgets.dart'; 2 | 3 | class LifeCycleObserver with WidgetsBindingObserver { 4 | 5 | factory LifeCycleObserver() => _sharedInstance(); 6 | static LifeCycleObserver get instance => _sharedInstance(); 7 | static LifeCycleObserver _instance; 8 | 9 | LifeCycleObserver.internal(); 10 | 11 | static LifeCycleObserver _sharedInstance() { 12 | if (_instance == null) { 13 | _instance = LifeCycleObserver.internal(); 14 | } 15 | return _instance; 16 | } 17 | 18 | startObserver() { 19 | WidgetsBinding.instance.addObserver(this); 20 | } 21 | 22 | @override 23 | void didChangeAppLifecycleState(AppLifecycleState state) async { 24 | // TODO: implement didChangeAppLifecycleState 25 | super.didChangeAppLifecycleState(state); 26 | print('LifeCycleState:$state'); 27 | 28 | if (state == AppLifecycleState.resumed) { 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /flutter_sample/lib/sample_app/helpers/routes/routes.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter_sample/sample_app/main/main_view.dart'; 2 | import 'package:flutter_sample/sample_app/post/post_page.dart'; 3 | import '../../login/login_view.dart'; 4 | import '../../user/update_page.dart'; 5 | import '../../main/main_page_view.dart'; 6 | 7 | class Router { 8 | 9 | static final Object routes = { 10 | "/main_page": (context) => MySampleAppMainPage(), 11 | "/login_page": (context) => LoginViewPage(), 12 | '/update_page': (context) => UpdatePage(), 13 | '/post_page': (context) => PostPage(), 14 | '/unknown_page': (context) => SampleUnknownRoutePage(), 15 | }; 16 | 17 | } -------------------------------------------------------------------------------- /flutter_sample/lib/sample_app/home/character_item.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter/widgets.dart'; 3 | import 'package:flutter_sample/sample_app/home/models/characters.dart'; 4 | 5 | class CharacterItem extends StatelessWidget { 6 | final Character character; 7 | const CharacterItem({Key key, @required this.character}) : super(key: key); 8 | 9 | @override 10 | Widget build(BuildContext context) { 11 | var icon = Icon( 12 | Icons.person_add, 13 | size: 40, 14 | ); 15 | 16 | var title = Text( 17 | character?.name, 18 | style: TextStyle( 19 | color: Colors.red, 20 | ), 21 | ); 22 | 23 | var subTitle = Text( 24 | character?.birthYear, 25 | style: TextStyle( 26 | color: Colors.blue 27 | ), 28 | ); 29 | 30 | return Column( 31 | children: [ 32 | ListTile( 33 | leading: icon, 34 | title: title, 35 | subtitle: subTitle, 36 | contentPadding: const EdgeInsets.symmetric(horizontal: 20), 37 | ) 38 | ], 39 | ); 40 | } 41 | } -------------------------------------------------------------------------------- /flutter_sample/lib/sample_app/home/films_item.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_sample/sample_app/home/models/films.dart'; 3 | 4 | class FilmsItem extends StatelessWidget { 5 | final Film film; 6 | const FilmsItem({Key key, @required this.film}) : super(key: key); 7 | 8 | @override 9 | Widget build(BuildContext context) { 10 | var icon = Icon( 11 | Icons.person, 12 | size: 40, 13 | ); 14 | var title = Text( 15 | film?.title, 16 | style: TextStyle( 17 | color: Colors.red 18 | ) 19 | ); 20 | 21 | var subTitle = Text( 22 | film?.director, 23 | style: TextStyle( 24 | color:Colors.blue, 25 | ), 26 | ); 27 | 28 | 29 | return Column( 30 | children: [ 31 | ListTile( 32 | leading: icon, 33 | title: title, 34 | subtitle: subTitle, 35 | contentPadding: const EdgeInsets.symmetric(horizontal: 20), 36 | ), 37 | ], 38 | ); 39 | } 40 | } -------------------------------------------------------------------------------- /flutter_sample/lib/sample_app/home/models/characters.dart: -------------------------------------------------------------------------------- 1 | class Character { 2 | String name, birthYear, gender, eyeColor; 3 | int height; 4 | 5 | Character({ 6 | this.name, 7 | this.birthYear, 8 | this.gender, 9 | this.eyeColor 10 | }); 11 | 12 | Character.fromMap(Map map) { 13 | name = map['name']; 14 | birthYear = map['birth_year']; 15 | gender = map['gender']; 16 | height = int.parse(map['height']);//map['height'] as int; 17 | eyeColor = map['eye_color']; 18 | } 19 | 20 | } -------------------------------------------------------------------------------- /flutter_sample/lib/sample_app/home/models/films.dart: -------------------------------------------------------------------------------- 1 | class Film { 2 | String title, openingCrawl, director, producer; 3 | DateTime releaseDate; 4 | 5 | Film({ 6 | this.title, 7 | this.openingCrawl, 8 | this.director, 9 | this.producer, 10 | this.releaseDate 11 | }); 12 | 13 | Film.fromMap(Map map) { 14 | title = map['title']; 15 | openingCrawl = map['openining_crawlt']; 16 | director = map['director']; 17 | producer = map['producer']; 18 | releaseDate = DateTime.parse(map['release_date']); 19 | } 20 | } -------------------------------------------------------------------------------- /flutter_sample/lib/sample_app/home/models/planets.dart: -------------------------------------------------------------------------------- 1 | class Planet { 2 | String name, climate, terrain, gravity, population; 3 | int diameter; 4 | 5 | Planet({ 6 | this.name, 7 | this.climate, 8 | this.terrain, 9 | this.gravity, 10 | this.population 11 | }); 12 | 13 | Planet.fromMap(Map map) { 14 | name = map['name']; 15 | climate = map['climate']; 16 | terrain = map['terrain']; 17 | gravity = map['gravity']; 18 | population = map['population']; 19 | } 20 | } -------------------------------------------------------------------------------- /flutter_sample/lib/sample_app/home/no_internet_connection.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter/widgets.dart'; 3 | 4 | class NoInternetConnection extends StatelessWidget { 5 | final VoidCallback action; 6 | const NoInternetConnection({Key key, this.action}) : super(key: key); 7 | 8 | 9 | @override 10 | Widget build(BuildContext context) { 11 | return Column( 12 | mainAxisAlignment: MainAxisAlignment.center, 13 | children: [ 14 | Text( 15 | 'Failed Connect to the internet!', 16 | style: TextStyle( 17 | color: Colors.grey, 18 | fontSize: 16.0 19 | ), 20 | textAlign: TextAlign.center, 21 | ), 22 | Padding( 23 | padding: const EdgeInsets.only(top: 18.0), 24 | child: FloatingActionButton( 25 | backgroundColor: Theme.of(context).primaryColorLight, 26 | child: Icon(Icons.refresh, size: 30.0,), 27 | onPressed: action, 28 | ), 29 | ), 30 | ], 31 | ); 32 | } 33 | } -------------------------------------------------------------------------------- /flutter_sample/lib/sample_app/home/planets_item.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter/rendering.dart'; 3 | import 'package:flutter_sample/sample_app/home/models/planets.dart'; 4 | 5 | class PlanetsItem extends StatelessWidget { 6 | final Planet planet; 7 | const PlanetsItem({Key key, @required this.planet}) : super(key: key); 8 | 9 | @override 10 | Widget build(BuildContext context) { 11 | var icon = Icon( 12 | Icons.palette, 13 | size: 40, 14 | ); 15 | 16 | var title = Text( 17 | planet?.name, 18 | style: TextStyle(color: Colors.red), 19 | ); 20 | 21 | var subTitle = Text( 22 | planet?.population, 23 | style: TextStyle(color: Colors.red), 24 | ); 25 | return Column( 26 | children: [ 27 | ListTile( 28 | title: title, 29 | subtitle: subTitle, 30 | leading: icon, 31 | contentPadding: const EdgeInsets.symmetric(horizontal: 20), 32 | ), 33 | ], 34 | ); 35 | } 36 | } -------------------------------------------------------------------------------- /flutter_sample/lib/sample_app/home/service/home_page_api.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter_sample/sample_app/home/models/characters.dart'; 2 | import 'package:flutter_sample/sample_app/home/models/films.dart'; 3 | import 'package:flutter_sample/sample_app/home/models/planets.dart'; 4 | 5 | abstract class HomePageApi { 6 | Future> getFilms(); 7 | Future> getPlanets(); 8 | Future> getCharacters(); 9 | } -------------------------------------------------------------------------------- /flutter_sample/lib/sample_app/login/login_view.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class LoginViewPage extends StatefulWidget { 4 | LoginViewPage({Key key}) : super(key: key); 5 | 6 | _LoginViewPageState createState() => _LoginViewPageState(); 7 | } 8 | 9 | class _LoginViewPageState extends State { 10 | @override 11 | Widget build(BuildContext context) { 12 | return Scaffold( 13 | appBar: AppBar( 14 | title: Text("登录"), 15 | ), 16 | body: Text("data"), 17 | ); 18 | } 19 | } -------------------------------------------------------------------------------- /flutter_sample/lib/sample_app/news/news_page.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class NewsPage extends StatefulWidget { 4 | NewsPage({Key key}) : super(key: key); 5 | 6 | _NewsPageState createState() => _NewsPageState(); 7 | } 8 | 9 | class _NewsPageState extends State { 10 | @override 11 | Widget build(BuildContext context) { 12 | return Scaffold( 13 | appBar: AppBar( 14 | title: Text('资讯'), 15 | ), 16 | body: Container( 17 | // 主题复用 18 | color: Theme.of(context).primaryColor, 19 | child: Text( 20 | 'Text with a background color', 21 | // 使用主题色 22 | // style: TextStyle(color: Theme.of(context).primaryColor), 23 | style: Theme.of(context).textTheme.title, 24 | ), 25 | ), 26 | ); 27 | } 28 | } -------------------------------------------------------------------------------- /flutter_sample/lib/sample_app/user/models/update_model.dart: -------------------------------------------------------------------------------- 1 | class UpdateModel { 2 | String appIcon; 3 | String appName; 4 | String appSize; 5 | String appDate; 6 | String appDescription; 7 | String appVersion; 8 | bool isFold = true; 9 | bool showMoreButton = false; 10 | UpdateModel({this.appIcon, this.appName, this.appSize, this.appDate, this.appDescription, this.appVersion}); 11 | 12 | UpdateModel.fromMap(Map map) { 13 | appIcon = map['appIcon']; 14 | appName = map['appName']; 15 | appSize = map['appSize']; 16 | appDate = map['appDate']; 17 | appDescription = map['appDescription']; 18 | appVersion = map['appVersion']; 19 | } 20 | } -------------------------------------------------------------------------------- /flutter_sample/lib/sample_app/user/user_page.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class UserPage extends StatefulWidget { 4 | UserPage({Key key}) : super(key: key); 5 | 6 | _UserPageState createState() => _UserPageState(); 7 | } 8 | 9 | class _UserPageState extends State { 10 | @override 11 | Widget build(BuildContext context) { 12 | return Scaffold( 13 | appBar: AppBar( 14 | title: Text('个人中心'), 15 | ), 16 | body: Center( 17 | child: RaisedButton( 18 | child: Text('更新页'), 19 | onPressed: () { 20 | Navigator.pushNamed(context, '/update_page'); 21 | // Navigator.pushNamed(context, '/post_page'); 22 | }, 23 | ), 24 | ), 25 | ); 26 | } 27 | } -------------------------------------------------------------------------------- /flutter_sample/lib/sample_app/wealth/wealth_page.dart: -------------------------------------------------------------------------------- 1 | 2 | import 'package:flutter/material.dart'; 3 | 4 | class WealthPage extends StatefulWidget { 5 | WealthPage({Key key}) : super(key: key); 6 | 7 | _WealthPageState createState() => _WealthPageState(); 8 | } 9 | 10 | class _WealthPageState extends State { 11 | 12 | 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('财富'), 19 | ), 20 | body: Container( 21 | color: Colors.red, 22 | ), 23 | ); 24 | } 25 | } 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /flutter_sample/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 | -------------------------------------------------------------------------------- /flutter_shuqi-master/.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: 7a4c33425ddd78c54aba07d86f3f9a4a0051769b 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /flutter_shuqi-master/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /flutter_shuqi-master/android/app/src/main/java/com/example/shuqi/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.shuqi; 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 | -------------------------------------------------------------------------------- /flutter_shuqi-master/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /flutter_shuqi-master/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /flutter_shuqi-master/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /flutter_shuqi-master/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /flutter_shuqi-master/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /flutter_shuqi-master/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /flutter_shuqi-master/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /flutter_shuqi-master/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /flutter_shuqi-master/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | google() 4 | jcenter() 5 | } 6 | 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:3.2.1' 9 | } 10 | } 11 | 12 | allprojects { 13 | repositories { 14 | google() 15 | jcenter() 16 | } 17 | } 18 | 19 | rootProject.buildDir = '../build' 20 | subprojects { 21 | project.buildDir = "${rootProject.buildDir}/${project.name}" 22 | } 23 | subprojects { 24 | project.evaluationDependsOn(':app') 25 | } 26 | 27 | task clean(type: Delete) { 28 | delete rootProject.buildDir 29 | } 30 | -------------------------------------------------------------------------------- /flutter_shuqi-master/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | -------------------------------------------------------------------------------- /flutter_shuqi-master/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip 7 | -------------------------------------------------------------------------------- /flutter_shuqi-master/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() 4 | 5 | def plugins = new Properties() 6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') 7 | if (pluginsFile.exists()) { 8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } 9 | } 10 | 11 | plugins.each { name, path -> 12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() 13 | include ":$name" 14 | project(":$name").projectDir = pluginDirectory 15 | } 16 | -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/actionbar_checkin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/actionbar_checkin.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/actionbar_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/actionbar_search.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/aliuser_title_back_normal.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/aliuser_title_back_normal.9.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/arrow_right.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/bookshelf_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/bookshelf_add.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/bookshelf_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/bookshelf_bg.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/bookshelf_cloud_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/bookshelf_cloud_0.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/bookshelf_cloud_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/bookshelf_cloud_1.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/bookshelf_cloud_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/bookshelf_cloud_2.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/bookshelf_cloud_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/bookshelf_cloud_3.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/bookshelf_continue_read.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/bookshelf_continue_read.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/detail_chapter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/detail_chapter.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/detail_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/detail_down.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/detail_fold_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/detail_fold_bg.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/detail_latest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/detail_latest.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/detail_star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/detail_star.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/detail_star_half.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/detail_star_half.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/detail_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/detail_up.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/detail_write_comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/detail_write_comment.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/home_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/home_search.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/home_tip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/home_tip.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/icon_menu_catalog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/icon_menu_catalog.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/icon_menu_share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/icon_menu_share.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/me_action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/me_action.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/me_buy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/me_buy.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/me_comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/me_comment.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/me_coupon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/me_coupon.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/me_date.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/me_date.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/me_favorite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/me_favorite.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/me_feedback.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/me_feedback.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/me_gift.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/me_gift.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/me_night.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/me_night.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/me_record.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/me_record.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/me_setting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/me_setting.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/me_theme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/me_theme.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/me_vip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/me_vip.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/me_wallet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/me_wallet.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/menu_category.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/menu_category.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/menu_complete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/menu_complete.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/menu_publish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/menu_publish.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/menu_rank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/menu_rank.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/menu_vip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/menu_vip.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/placeholder_avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/placeholder_avatar.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/pub_back_gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/pub_back_gray.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/pub_back_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/pub_back_white.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/read_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/read_bg.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/read_icon_brightness.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/read_icon_brightness.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/read_icon_catalog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/read_icon_catalog.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/read_icon_chapter_next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/read_icon_chapter_next.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/read_icon_chapter_previous.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/read_icon_chapter_previous.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/read_icon_font.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/read_icon_font.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/read_icon_more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/read_icon_more.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/read_icon_setting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/read_icon_setting.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/read_icon_vip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/read_icon_vip.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/read_icon_voice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/read_icon_voice.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/read_more_detail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/read_more_detail.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/reader_battery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/reader_battery.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/tab_bookshelf_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/tab_bookshelf_n.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/tab_bookshelf_p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/tab_bookshelf_p.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/tab_bookstore_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/tab_bookstore_n.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/tab_bookstore_p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/tab_bookstore_p.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/tab_me_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/tab_me_n.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/tab_me_p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/tab_me_p.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/tab_writer_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/tab_writer_n.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/2.0x/tab_writer_p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/2.0x/tab_writer_p.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/actionbar_checkin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/actionbar_checkin.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/actionbar_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/actionbar_search.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/aliuser_title_back_normal.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/aliuser_title_back_normal.9.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/arrow_right.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/bookshelf_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/bookshelf_add.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/bookshelf_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/bookshelf_bg.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/bookshelf_cloud_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/bookshelf_cloud_0.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/bookshelf_cloud_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/bookshelf_cloud_1.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/bookshelf_cloud_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/bookshelf_cloud_2.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/bookshelf_cloud_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/bookshelf_cloud_3.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/bookshelf_continue_read.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/bookshelf_continue_read.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/detail_chapter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/detail_chapter.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/detail_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/detail_down.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/detail_fold_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/detail_fold_bg.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/detail_latest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/detail_latest.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/detail_star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/detail_star.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/detail_star_half.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/detail_star_half.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/detail_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/detail_up.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/detail_write_comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/detail_write_comment.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/home_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/home_search.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/home_tip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/home_tip.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/icon_menu_catalog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/icon_menu_catalog.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/icon_menu_share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/icon_menu_share.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/me_action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/me_action.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/me_buy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/me_buy.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/me_comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/me_comment.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/me_coupon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/me_coupon.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/me_date.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/me_date.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/me_favorite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/me_favorite.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/me_feedback.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/me_feedback.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/me_gift.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/me_gift.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/me_night.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/me_night.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/me_record.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/me_record.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/me_setting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/me_setting.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/me_theme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/me_theme.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/me_vip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/me_vip.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/me_wallet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/me_wallet.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/menu_category.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/menu_category.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/menu_complete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/menu_complete.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/menu_publish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/menu_publish.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/menu_rank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/menu_rank.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/menu_vip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/menu_vip.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/placeholder_avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/placeholder_avatar.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/pub_back_gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/pub_back_gray.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/pub_back_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/pub_back_white.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/read_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/read_bg.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/read_icon_brightness.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/read_icon_brightness.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/read_icon_catalog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/read_icon_catalog.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/read_icon_chapter_next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/read_icon_chapter_next.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/read_icon_chapter_previous.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/read_icon_chapter_previous.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/read_icon_font.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/read_icon_font.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/read_icon_more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/read_icon_more.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/read_icon_setting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/read_icon_setting.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/read_icon_vip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/read_icon_vip.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/read_icon_voice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/read_icon_voice.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/read_more_detail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/read_more_detail.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/reader_battery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/reader_battery.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/tab_bookshelf_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/tab_bookshelf_n.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/tab_bookshelf_p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/tab_bookshelf_p.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/tab_bookstore_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/tab_bookstore_n.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/tab_bookstore_p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/tab_bookstore_p.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/tab_me_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/tab_me_n.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/tab_me_p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/tab_me_p.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/tab_writer_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/tab_writer_n.png -------------------------------------------------------------------------------- /flutter_shuqi-master/img/tab_writer_p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/img/tab_writer_p.png -------------------------------------------------------------------------------- /flutter_shuqi-master/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 | -------------------------------------------------------------------------------- /flutter_shuqi-master/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /flutter_shuqi-master/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /flutter_shuqi-master/ios/Flutter/flutter_export_environment.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # This is a generated file; do not edit or check into version control. 3 | export "FLUTTER_ROOT=/Users/chunsheng/flutter" 4 | export "FLUTTER_APPLICATION_PATH=/Users/chunsheng/Desktop/Flutter-Learning/flutter_shuqi-master" 5 | export "FLUTTER_TARGET=/Users/chunsheng/Desktop/Flutter-Learning/flutter_shuqi-master/lib/main.dart" 6 | export "FLUTTER_BUILD_DIR=build" 7 | export "SYMROOT=${SOURCE_ROOT}/../build/ios" 8 | export "FLUTTER_FRAMEWORK_DIR=/Users/chunsheng/flutter/bin/cache/artifacts/engine/ios" 9 | export "FLUTTER_BUILD_NAME=1.0.0" 10 | export "FLUTTER_BUILD_NUMBER=1" 11 | export "TRACK_WIDGET_CREATION=true" 12 | -------------------------------------------------------------------------------- /flutter_shuqi-master/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /flutter_shuqi-master/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /flutter_shuqi-master/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /flutter_shuqi-master/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildSystemType 6 | Original 7 | 8 | 9 | -------------------------------------------------------------------------------- /flutter_shuqi-master/ios/Runner/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : FlutterAppDelegate 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /flutter_shuqi-master/ios/Runner/AppDelegate.m: -------------------------------------------------------------------------------- 1 | #include "AppDelegate.h" 2 | #include "GeneratedPluginRegistrant.h" 3 | 4 | @implementation AppDelegate 5 | 6 | - (BOOL)application:(UIApplication *)application 7 | didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 8 | [GeneratedPluginRegistrant registerWithRegistry:self]; 9 | // Override point for customization after application launch. 10 | return [super application:application didFinishLaunchingWithOptions:launchOptions]; 11 | } 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /flutter_shuqi-master/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-1024.png -------------------------------------------------------------------------------- /flutter_shuqi-master/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-120.png -------------------------------------------------------------------------------- /flutter_shuqi-master/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-121.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-121.png -------------------------------------------------------------------------------- /flutter_shuqi-master/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-180.png -------------------------------------------------------------------------------- /flutter_shuqi-master/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-40.png -------------------------------------------------------------------------------- /flutter_shuqi-master/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-58.png -------------------------------------------------------------------------------- /flutter_shuqi-master/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-60.png -------------------------------------------------------------------------------- /flutter_shuqi-master/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-80.png -------------------------------------------------------------------------------- /flutter_shuqi-master/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-87.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-87.png -------------------------------------------------------------------------------- /flutter_shuqi-master/ios/Runner/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /flutter_shuqi-master/ios/Runner/Assets.xcassets/LaunchImage.launchimage/1125_2436.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/ios/Runner/Assets.xcassets/LaunchImage.launchimage/1125_2436.png -------------------------------------------------------------------------------- /flutter_shuqi-master/ios/Runner/Assets.xcassets/LaunchImage.launchimage/1242_2208.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/ios/Runner/Assets.xcassets/LaunchImage.launchimage/1242_2208.png -------------------------------------------------------------------------------- /flutter_shuqi-master/ios/Runner/Assets.xcassets/LaunchImage.launchimage/640_1136.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/ios/Runner/Assets.xcassets/LaunchImage.launchimage/640_1136.png -------------------------------------------------------------------------------- /flutter_shuqi-master/ios/Runner/Assets.xcassets/LaunchImage.launchimage/640_960.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/ios/Runner/Assets.xcassets/LaunchImage.launchimage/640_960.png -------------------------------------------------------------------------------- /flutter_shuqi-master/ios/Runner/Assets.xcassets/LaunchImage.launchimage/750_1334.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/ios/Runner/Assets.xcassets/LaunchImage.launchimage/750_1334.png -------------------------------------------------------------------------------- /flutter_shuqi-master/ios/Runner/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char* argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/app/app_scene.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:shuqi/public.dart'; 3 | import 'package:shuqi/app/root_scene.dart'; 4 | 5 | final RouteObserver routeObserver = RouteObserver(); 6 | 7 | class AppScene extends StatelessWidget { 8 | @override 9 | Widget build(BuildContext context) { 10 | return MaterialApp( 11 | title: '书旗小说', 12 | navigatorObservers: [routeObserver], 13 | debugShowCheckedModeBanner: false, 14 | theme: ThemeData( 15 | primaryColor: Colors.white, 16 | dividerColor: Color(0xffeeeeee), 17 | scaffoldBackgroundColor: SQColor.paper, 18 | textTheme: TextTheme(body1: TextStyle(color: SQColor.darkGray)), 19 | ), 20 | home: RootScene(), 21 | ); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/app/constant.dart: -------------------------------------------------------------------------------- 1 | const String EventToggleTabBarIndex = 'EventToggleTabBarIndex'; 2 | -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/app/request.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | import 'package:flutter/services.dart' show rootBundle; 3 | import 'dart:convert'; 4 | 5 | class Request { 6 | static const String baseUrl = 'http://www.shuqi.com/'; 7 | 8 | static Future get({String action, Map params}) async { 9 | return Request.mock(action: action, params: params); 10 | } 11 | 12 | static Future post({String action, Map params}) async { 13 | return Request.mock(action: action, params: params); 14 | } 15 | 16 | static Future mock({String action, Map params}) async { 17 | var responseStr = await rootBundle.loadString('mock/$action.json'); 18 | var responseJson = json.decode(responseStr); 19 | return responseJson['data']; 20 | } 21 | } -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/app/sq_color.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class SQColor { 4 | static Color primary = Color(0xFF23B38E); 5 | static Color secondary = Color(0xFF51DEC6); 6 | static Color red = Color(0xFFFF2B45); 7 | static Color orange = Color(0xFFF67264); 8 | static Color white = Color(0xFFFFFFFF); 9 | static Color paper = Color(0xFFF5F5F5); 10 | static Color lightGray = Color(0xFFEEEEEE); 11 | static Color darkGray = Color(0xFF333333); 12 | static Color gray = Color(0xFF888888); 13 | static Color blue = Color(0xFF3688FF); 14 | static Color golden = Color(0xff8B7961); 15 | } 16 | -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/global.dart: -------------------------------------------------------------------------------- 1 | import 'package:shared_preferences/shared_preferences.dart'; 2 | 3 | SharedPreferences preferences; 4 | -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/home/home_banner.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:carousel_slider/carousel_slider.dart'; 3 | 4 | import 'package:shuqi/public.dart'; 5 | import 'home_model.dart'; 6 | 7 | class HomeBanner extends StatelessWidget { 8 | final List carouselInfos; 9 | 10 | HomeBanner(this.carouselInfos); 11 | 12 | @override 13 | Widget build(BuildContext context) { 14 | if (carouselInfos.length == 0) { 15 | return SizedBox(); 16 | } 17 | 18 | return Container( 19 | color: Colors.white, 20 | child: CarouselSlider( 21 | items: carouselInfos.map((info) { 22 | return Builder( 23 | builder: (BuildContext context) { 24 | return Container( 25 | width: Screen.width, 26 | margin: EdgeInsets.symmetric(horizontal: 5.0), 27 | child: Image.network( 28 | info.imageUrl ?? '', 29 | fit: BoxFit.cover, 30 | ), 31 | ); 32 | }, 33 | ); 34 | }).toList(), 35 | aspectRatio: 2, 36 | autoPlay: true, 37 | ), 38 | ); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/home/home_menu.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | import 'package:shuqi/public.dart'; 4 | 5 | import 'home_model.dart'; 6 | 7 | class HomeMenu extends StatelessWidget { 8 | final List infos; 9 | 10 | HomeMenu(this.infos); 11 | 12 | @override 13 | Widget build(BuildContext context) { 14 | return Container( 15 | color: Colors.white, 16 | padding: EdgeInsets.symmetric(vertical: 10), 17 | child: Row( 18 | mainAxisAlignment: MainAxisAlignment.spaceAround, 19 | children: infos.map((info) => menuItem(info)).toList(), 20 | ), 21 | ); 22 | } 23 | 24 | Widget menuItem(MenuInfo info) { 25 | return Column( 26 | children: [ 27 | Image.asset(info.icon), 28 | SizedBox(height: 5), 29 | Text(info.title, style: TextStyle(fontSize: 12, color: SQColor.gray)), 30 | ], 31 | ); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/home/home_section_view.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class HomeSectionView extends StatelessWidget { 4 | final String title; 5 | HomeSectionView(this.title); 6 | 7 | @override 8 | Widget build(BuildContext context) { 9 | return Container( 10 | color: Colors.white, 11 | padding: EdgeInsets.fromLTRB(15, 15, 0, 5), 12 | child: Row( 13 | children: [ 14 | Image.asset('img/home_tip.png'), 15 | SizedBox(width: 10), 16 | Text( 17 | '$title', 18 | style: TextStyle(fontSize: 17, fontWeight: FontWeight.bold), 19 | ) 20 | ], 21 | ), 22 | ); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/home/novel_four_grid_view.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | import 'home_model.dart'; 4 | import 'home_section_view.dart'; 5 | import 'home_novel_cover_view.dart'; 6 | 7 | class NovelFourGridView extends StatelessWidget { 8 | final HomeModule cardInfo; 9 | 10 | NovelFourGridView(this.cardInfo); 11 | 12 | @override 13 | Widget build(BuildContext context) { 14 | var novels = cardInfo.books; 15 | if (novels.length < 8) { 16 | return Container(); 17 | } 18 | var children = novels.map((novel) => HomeNovelCoverView(novel)).toList(); 19 | return Container( 20 | color: Colors.white, 21 | child: Column( 22 | crossAxisAlignment: CrossAxisAlignment.start, 23 | children: [ 24 | HomeSectionView(cardInfo.name), 25 | Container( 26 | padding: EdgeInsets.fromLTRB(15, 10, 15, 10), 27 | child: Wrap(spacing: 15, runSpacing: 20, children: children), 28 | ), 29 | Container( 30 | height: 10, 31 | color: Color(0xfff5f5f5), 32 | ) 33 | ], 34 | ), 35 | ); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/home/novel_normal_card.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | import 'home_model.dart'; 4 | import 'novel_cell.dart'; 5 | import 'home_section_view.dart'; 6 | 7 | class NovelNormalCard extends StatelessWidget { 8 | final HomeModule cardInfo; 9 | 10 | NovelNormalCard(this.cardInfo); 11 | 12 | @override 13 | Widget build(BuildContext context) { 14 | var novels = cardInfo.books; 15 | if (novels.length < 3) { 16 | return null; 17 | } 18 | 19 | List children = [ 20 | HomeSectionView(cardInfo.name), 21 | ]; 22 | for (var i = 0; i < novels.length; i++) { 23 | var novel = novels[i]; 24 | children.add(NovelCell(novel)); 25 | children.add(Divider(height: 1)); 26 | } 27 | children.add(Container(height: 10, color: Color(0xfff5f5f5))); 28 | 29 | return Container( 30 | color: Colors.white, 31 | child: Column( 32 | crossAxisAlignment: CrossAxisAlignment.start, 33 | children: children, 34 | ), 35 | ); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'dart:io'; 3 | import 'package:flutter/services.dart'; 4 | 5 | import 'package:shuqi/app/app_scene.dart'; 6 | 7 | void main() { 8 | runApp(AppScene()); 9 | 10 | if (Platform.isAndroid) { 11 | SystemUiOverlayStyle systemUiOverlayStyle = SystemUiOverlayStyle(statusBarColor: Colors.transparent); 12 | SystemChrome.setSystemUIOverlayStyle(systemUiOverlayStyle); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/me/code_button.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | import 'package:shuqi/app/sq_color.dart'; 4 | 5 | class CodeButton extends StatelessWidget { 6 | final VoidCallback onPressed; 7 | final int coldDownSeconds; 8 | 9 | CodeButton({@required this.onPressed, @required this.coldDownSeconds}); 10 | 11 | @override 12 | Widget build(BuildContext context) { 13 | if (coldDownSeconds > 0) { 14 | return Container( 15 | width: 95, 16 | child: Center( 17 | child: Text( 18 | '${coldDownSeconds}s', 19 | style: TextStyle(fontSize: 14, color: SQColor.primary), 20 | ), 21 | ), 22 | ); 23 | } 24 | 25 | return GestureDetector( 26 | onTap: onPressed, 27 | child: Container( 28 | width: 95, 29 | child: Text('获取验证码', 30 | textAlign: TextAlign.center, 31 | style: TextStyle( 32 | fontSize: 14, 33 | fontWeight: FontWeight.normal, 34 | color: SQColor.primary)), 35 | ), 36 | ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/me/setting_scene.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | import 'package:shuqi/public.dart'; 4 | 5 | class SettingScene extends StatelessWidget { 6 | @override 7 | Widget build(BuildContext context) { 8 | List children = []; 9 | 10 | if (UserManager.instance.isLogin) { 11 | children.add(GestureDetector( 12 | onTap: () { 13 | Navigator.pop(context); 14 | UserManager.instance.logout(); 15 | }, 16 | child: Container( 17 | height: 50, 18 | color: Colors.white, 19 | child: Center( 20 | child: Text('退出登录', style: TextStyle(fontSize: 16, color: SQColor.red)), 21 | ), 22 | ), 23 | )); 24 | } 25 | return Scaffold( 26 | appBar: AppBar(title: Text('设置'), elevation: 0.5), 27 | body: Container( 28 | child: ListView( 29 | children: children, 30 | ), 31 | ), 32 | ); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/me/web_scene.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_webview_plugin/flutter_webview_plugin.dart'; 3 | import 'package:share/share.dart'; 4 | 5 | class WebScene extends StatefulWidget { 6 | final String url; 7 | final String title; 8 | 9 | WebScene({@required this.url, this.title}); 10 | 11 | @override 12 | _WebSceneState createState() => _WebSceneState(); 13 | } 14 | 15 | class _WebSceneState extends State { 16 | @override 17 | Widget build(BuildContext context) { 18 | return WebviewScaffold( 19 | url: this.widget.url, 20 | appBar: AppBar( 21 | title: Text(this.widget.title ?? '书旗'), 22 | actions: [ 23 | GestureDetector( 24 | onTap: () { 25 | Share.share(this.widget.url); 26 | }, 27 | child: Image.asset('img/icon_menu_share.png'), 28 | ) 29 | ], 30 | ), 31 | ); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/model/article.dart: -------------------------------------------------------------------------------- 1 | class Article { 2 | int id; 3 | int novelId; 4 | String title; 5 | String content; 6 | int price; 7 | int index; 8 | int nextArticleId; 9 | int preArticleId; 10 | 11 | List> pageOffsets; 12 | 13 | Article.fromJson(Map data) { 14 | id = data['id']; 15 | novelId = data['novel_id']; 16 | title = data['title']; 17 | content = data['content']; 18 | content = '  ' + content; 19 | content = content.replaceAll('\n', '\n  '); 20 | price = data['welth']; 21 | index = data['index']; 22 | nextArticleId = data['next_id']; 23 | preArticleId = data['prev_id']; 24 | } 25 | 26 | String stringAtPageIndex(int index) { 27 | var offset = pageOffsets[index]; 28 | return this.content.substring(offset['start'], offset['end']); 29 | } 30 | 31 | int get pageCount { 32 | return pageOffsets.length; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/model/chapter.dart: -------------------------------------------------------------------------------- 1 | 2 | class Chapter { 3 | int id; 4 | String title; 5 | int index; 6 | 7 | Chapter.fromJson(Map data) { 8 | id = data['id']; 9 | title = data['title']; 10 | index = data['index']; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/model/novel_comment.dart: -------------------------------------------------------------------------------- 1 | class NovelComment { 2 | String nickname; 3 | String avatar; 4 | String content; 5 | 6 | NovelComment.fromJson(Map data) { 7 | nickname = data['nickName']; 8 | avatar = data['userPhoto']; 9 | content = data['text']; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/novel_detail/novel_summary_view.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class NovelSummaryView extends StatelessWidget { 4 | final String summary; 5 | final bool isUnfold; 6 | final VoidCallback onPressed; 7 | 8 | NovelSummaryView(this.summary, this.isUnfold, this.onPressed); 9 | 10 | @override 11 | Widget build(BuildContext context) { 12 | return GestureDetector( 13 | onTap: onPressed, 14 | child: Container( 15 | color: Colors.white, 16 | padding: EdgeInsets.fromLTRB(15, 15, 15, 15), 17 | child: Stack( 18 | alignment: AlignmentDirectional.bottomEnd, 19 | children: [ 20 | Text( 21 | summary, 22 | maxLines: isUnfold ? null : 3, 23 | style: TextStyle(fontSize: 14), 24 | ), 25 | Image.asset('img/detail_fold_bg.png'), 26 | Image.asset(isUnfold ? 'img/detail_up.png' : 'img/detail_down.png'), 27 | ], 28 | ), 29 | ), 30 | ); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/public.dart: -------------------------------------------------------------------------------- 1 | library public; 2 | 3 | // Vendor 4 | 5 | // Global 6 | export 'package:shuqi/global.dart'; 7 | 8 | // Utility 9 | export 'package:shuqi/utility/utility.dart'; 10 | export 'package:shuqi/utility/screen.dart'; 11 | export 'package:shuqi/utility/event_bus.dart'; 12 | export 'package:shuqi/utility/toast.dart'; 13 | export 'package:shuqi/utility/styles.dart'; 14 | 15 | // Widget 16 | export 'package:shuqi/widget/novel_cover_image.dart'; 17 | export 'package:shuqi/widget/novel_cover_view.dart'; 18 | 19 | // App 20 | export 'package:shuqi/app/constant.dart'; 21 | export 'package:shuqi/app/request.dart'; 22 | export 'package:shuqi/app/app_navigator.dart'; 23 | export 'package:shuqi/app/sq_color.dart'; 24 | export 'package:shuqi/app/user_manager.dart'; 25 | export 'package:shuqi/app/app_scene.dart'; 26 | 27 | // Model 28 | export 'package:shuqi/model/novel.dart'; 29 | export 'package:shuqi/model/chapter.dart'; 30 | export 'package:shuqi/model/novel_comment.dart'; 31 | export 'package:shuqi/model/article.dart'; 32 | -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/reader/article_provider.dart: -------------------------------------------------------------------------------- 1 | import 'package:shuqi/public.dart'; 2 | 3 | class ArticleProvider { 4 | static Future
fetchArticle(int articleId) async { 5 | var response = await Request.get(action: 'article_$articleId'); 6 | var article = Article.fromJson(response); 7 | 8 | return article; 9 | } 10 | } -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/reader/reader_config.dart: -------------------------------------------------------------------------------- 1 | class ReaderConfig { 2 | 3 | static ReaderConfig _instance; 4 | static ReaderConfig get instance { 5 | if (_instance == null) { 6 | _instance = ReaderConfig(); 7 | } 8 | return _instance; 9 | } 10 | 11 | 12 | double fontSize = 20.0; 13 | } -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/reader/reader_page_agent.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ReaderPageAgent { 4 | static List> getPageOffsets(String content, double height, double width, double fontSize) { 5 | String tempStr = content; 6 | List> pageConfig = []; 7 | int last = 0; 8 | while (true) { 9 | Map offset = {}; 10 | offset['start'] = last; 11 | TextPainter textPainter = TextPainter(textDirection: TextDirection.ltr); 12 | textPainter.text = TextSpan(text: tempStr, style: TextStyle(fontSize: fontSize)); 13 | textPainter.layout(maxWidth: width); 14 | var end = textPainter.getPositionForOffset(Offset(width, height)).offset; 15 | 16 | if (end == 0) { 17 | break; 18 | } 19 | tempStr = tempStr.substring(end, tempStr.length); 20 | offset['end'] = last + end; 21 | last = last + end; 22 | pageConfig.add(offset); 23 | } 24 | return pageConfig; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/reader/reader_utils.dart: -------------------------------------------------------------------------------- 1 | class ReaderUtils { 2 | static double topOffset = 37; 3 | static double bottomOffset = 37; 4 | } 5 | -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/utility/styles.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Styles { 4 | static List get borderShadow { 5 | return [BoxShadow(color: Color(0x22000000), blurRadius: 8)]; 6 | } 7 | } -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/utility/toast.dart: -------------------------------------------------------------------------------- 1 | import 'package:fluttertoast/fluttertoast.dart'; 2 | 3 | class Toast { 4 | static show(String msg) { 5 | Fluttertoast.showToast(msg: msg); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/utility/utility.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/widgets.dart'; 2 | import 'package:shuqi/utility/screen.dart'; 3 | 4 | afterLayout(VoidCallback callback) { 5 | WidgetsBinding.instance.addPostFrameCallback((Duration timeStamp) { 6 | callback(); 7 | }); 8 | } 9 | 10 | fixedFontSize(double fontSize) { 11 | return fontSize / Screen.textScaleFactor; 12 | } 13 | -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/vip/character_item.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter/widgets.dart'; 3 | import './models/characters.dart'; 4 | 5 | class CharacterItem extends StatelessWidget { 6 | final Character character; 7 | const CharacterItem({Key key, @required this.character}) : super(key: key); 8 | 9 | @override 10 | Widget build(BuildContext context) { 11 | var icon = Icon( 12 | Icons.person_add, 13 | size: 40, 14 | ); 15 | 16 | var title = Text( 17 | character?.name, 18 | style: TextStyle( 19 | color: Colors.red, 20 | ), 21 | ); 22 | 23 | var subTitle = Text( 24 | character?.birthYear, 25 | style: TextStyle( 26 | color: Colors.blue 27 | ), 28 | ); 29 | 30 | return Column( 31 | children: [ 32 | ListTile( 33 | leading: icon, 34 | title: title, 35 | subtitle: subTitle, 36 | contentPadding: const EdgeInsets.symmetric(horizontal: 20), 37 | ) 38 | ], 39 | ); 40 | } 41 | } -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/vip/films_item.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import './models/films.dart'; 3 | 4 | class FilmsItem extends StatelessWidget { 5 | final Film film; 6 | const FilmsItem({Key key, @required this.film}) : super(key: key); 7 | 8 | @override 9 | Widget build(BuildContext context) { 10 | var icon = Icon( 11 | Icons.person, 12 | size: 40, 13 | ); 14 | var title = Text( 15 | film?.title, 16 | style: TextStyle( 17 | color: Colors.red 18 | ) 19 | ); 20 | 21 | var subTitle = Text( 22 | film?.director, 23 | style: TextStyle( 24 | color:Colors.blue, 25 | ), 26 | ); 27 | 28 | 29 | return Column( 30 | children: [ 31 | ListTile( 32 | leading: icon, 33 | title: title, 34 | subtitle: subTitle, 35 | contentPadding: const EdgeInsets.symmetric(horizontal: 20), 36 | ), 37 | ], 38 | ); 39 | } 40 | } -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/vip/models/characters.dart: -------------------------------------------------------------------------------- 1 | class Character { 2 | String name, birthYear, gender, eyeColor; 3 | int height; 4 | 5 | Character({ 6 | this.name, 7 | this.birthYear, 8 | this.gender, 9 | this.eyeColor 10 | }); 11 | 12 | Character.fromMap(Map map) { 13 | name = map['name']; 14 | birthYear = map['birth_year']; 15 | gender = map['gender']; 16 | height = int.parse(map['height']);//map['height'] as int; 17 | eyeColor = map['eye_color']; 18 | } 19 | 20 | } -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/vip/models/films.dart: -------------------------------------------------------------------------------- 1 | class Film { 2 | String title, openingCrawl, director, producer; 3 | DateTime releaseDate; 4 | 5 | Film({ 6 | this.title, 7 | this.openingCrawl, 8 | this.director, 9 | this.producer, 10 | this.releaseDate 11 | }); 12 | 13 | Film.fromMap(Map map) { 14 | title = map['title']; 15 | openingCrawl = map['openining_crawlt']; 16 | director = map['director']; 17 | producer = map['producer']; 18 | releaseDate = DateTime.parse(map['release_date']); 19 | } 20 | } -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/vip/models/planets.dart: -------------------------------------------------------------------------------- 1 | class Planet { 2 | String name, climate, terrain, gravity, population; 3 | int diameter; 4 | 5 | Planet({ 6 | this.name, 7 | this.climate, 8 | this.terrain, 9 | this.gravity, 10 | this.population 11 | }); 12 | 13 | Planet.fromMap(Map map) { 14 | name = map['name']; 15 | climate = map['climate']; 16 | terrain = map['terrain']; 17 | gravity = map['gravity']; 18 | population = map['population']; 19 | } 20 | } -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/vip/no_internet_connection.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter/widgets.dart'; 3 | 4 | class NoInternetConnection extends StatelessWidget { 5 | final VoidCallback action; 6 | const NoInternetConnection({Key key, this.action}) : super(key: key); 7 | 8 | 9 | @override 10 | Widget build(BuildContext context) { 11 | return Column( 12 | mainAxisAlignment: MainAxisAlignment.center, 13 | children: [ 14 | Text( 15 | 'Failed Connect to the internet!', 16 | style: TextStyle( 17 | color: Colors.grey, 18 | fontSize: 16.0 19 | ), 20 | textAlign: TextAlign.center, 21 | ), 22 | Padding( 23 | padding: const EdgeInsets.only(top: 18.0), 24 | child: FloatingActionButton( 25 | backgroundColor: Theme.of(context).primaryColorLight, 26 | child: Icon(Icons.refresh, size: 30.0,), 27 | onPressed: action, 28 | ), 29 | ), 30 | ], 31 | ); 32 | } 33 | } -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/vip/planets_item.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter/rendering.dart'; 3 | import './models/planets.dart'; 4 | 5 | class PlanetsItem extends StatelessWidget { 6 | final Planet planet; 7 | const PlanetsItem({Key key, @required this.planet}) : super(key: key); 8 | 9 | @override 10 | Widget build(BuildContext context) { 11 | var icon = Icon( 12 | Icons.palette, 13 | size: 40, 14 | ); 15 | 16 | var title = Text( 17 | planet?.name, 18 | style: TextStyle(color: Colors.red), 19 | ); 20 | 21 | var subTitle = Text( 22 | planet?.population, 23 | style: TextStyle(color: Colors.red), 24 | ); 25 | return Column( 26 | children: [ 27 | ListTile( 28 | title: title, 29 | subtitle: subTitle, 30 | leading: icon, 31 | contentPadding: const EdgeInsets.symmetric(horizontal: 20), 32 | ), 33 | ], 34 | ); 35 | } 36 | } -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/vip/service/home_page_api.dart: -------------------------------------------------------------------------------- 1 | import '../models/characters.dart'; 2 | import '../models/films.dart'; 3 | import '../models/planets.dart'; 4 | 5 | abstract class HomePageApi { 6 | Future> getFilms(); 7 | Future> getPlanets(); 8 | Future> getCharacters(); 9 | } -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/vip/vip_page.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class VipPage extends StatelessWidget { 4 | const VipPage({Key key}) : super(key: key); 5 | 6 | @override 7 | Widget build(BuildContext context) { 8 | return Scaffold( 9 | appBar: AppBar( 10 | title: Text('会员'), 11 | ), 12 | body: Center( 13 | child: Text('会员'), 14 | ), 15 | ); 16 | } 17 | } -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/widget/novel_cover_image.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:cached_network_image/cached_network_image.dart'; 3 | 4 | import 'package:shuqi/app/sq_color.dart'; 5 | 6 | class NovelCoverImage extends StatelessWidget { 7 | final String imgUrl; 8 | final double width; 9 | final double height; 10 | NovelCoverImage(this.imgUrl, {this.width, this.height}); 11 | 12 | @override 13 | Widget build(BuildContext context) { 14 | return Container( 15 | child: Image( 16 | image: CachedNetworkImageProvider(imgUrl), 17 | fit: BoxFit.cover, 18 | width: width, 19 | height: height, 20 | ), 21 | decoration: BoxDecoration(border: Border.all(color: SQColor.paper)), 22 | ); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /flutter_shuqi-master/lib/widget/novel_cover_view.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | import 'package:shuqi/model/novel.dart'; 4 | import 'package:shuqi/widget/novel_cover_image.dart'; 5 | import 'package:shuqi/app/app_navigator.dart'; 6 | 7 | class NovelCoverView extends StatelessWidget { 8 | final Novel novel; 9 | 10 | NovelCoverView(this.novel); 11 | 12 | @override 13 | Widget build(BuildContext context) { 14 | return GestureDetector( 15 | onTap: () { 16 | AppNavigator.pushNovelDetail(context, novel); 17 | }, 18 | child: Container( 19 | width: 90, 20 | margin: EdgeInsets.symmetric(horizontal: 7), 21 | child: Column( 22 | crossAxisAlignment: CrossAxisAlignment.start, 23 | children: [ 24 | NovelCoverImage( 25 | novel.imgUrl, 26 | width: 90, 27 | height: 120, 28 | ), 29 | SizedBox(height: 10), 30 | Text(novel.name, style: TextStyle(fontSize: 12, fontWeight: FontWeight.bold), maxLines: 2), 31 | ], 32 | ), 33 | ), 34 | ); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /flutter_shuqi-master/mock/catalog.json: -------------------------------------------------------------------------------- 1 | { 2 | "state": "200", 3 | "message": "success", 4 | "data": [ 5 | { 6 | "id": 1000, 7 | "index": 0, 8 | "title": "第一章 落魄青年" 9 | }, 10 | { 11 | "id": 1001, 12 | "index": 1, 13 | "title": "第二章 不吃霸王餐" 14 | }, 15 | { 16 | "id": 1002, 17 | "index": 2, 18 | "title": "第三章 设计" 19 | }, 20 | { 21 | "id": 1003, 22 | "index": 3, 23 | "title": "第四章 将计就计" 24 | }, 25 | { 26 | "id": 1004, 27 | "index": 4, 28 | "title": "第五章 出手救治" 29 | }, 30 | { 31 | "id": 1005, 32 | "index": 5, 33 | "title": "第六章 美女请吃饭" 34 | }, 35 | { 36 | "id": 1006, 37 | "index": 6, 38 | "title": "第七章 没有免费的午餐" 39 | } 40 | ] 41 | } -------------------------------------------------------------------------------- /flutter_shuqi-master/mock/login.json: -------------------------------------------------------------------------------- 1 | { 2 | "state": "200", 3 | "message": "success", 4 | "data": { 5 | 6 | "token": "k3h6lvk3l78lxiutq5578", 7 | "id": 1854, 8 | "nickname": "lingjye", 9 | "avatar": "https://www.lingjye.com/img/avatar_1.jpeg", 10 | "is_vip": 0, 11 | "wealth": 53.4, 12 | "coupon": 3, 13 | "ticket": 6 14 | } 15 | } -------------------------------------------------------------------------------- /flutter_shuqi-master/mock/sms.json: -------------------------------------------------------------------------------- 1 | { 2 | "state": "200", 3 | "message": "success" 4 | } -------------------------------------------------------------------------------- /flutter_shuqi-master/res/values/strings_en.arb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/res/values/strings_en.arb -------------------------------------------------------------------------------- /flutter_shuqi-master/screenshot/android_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/screenshot/android_0.png -------------------------------------------------------------------------------- /flutter_shuqi-master/screenshot/android_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/screenshot/android_1.png -------------------------------------------------------------------------------- /flutter_shuqi-master/screenshot/android_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/screenshot/android_2.png -------------------------------------------------------------------------------- /flutter_shuqi-master/screenshot/ios_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/screenshot/ios_0.png -------------------------------------------------------------------------------- /flutter_shuqi-master/screenshot/ios_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/screenshot/ios_1.png -------------------------------------------------------------------------------- /flutter_shuqi-master/screenshot/ios_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/flutter_shuqi-master/screenshot/ios_2.png -------------------------------------------------------------------------------- /helloworld/.gradle/5.1.1/fileChanges/last-build.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /helloworld/.gradle/5.1.1/fileHashes/fileHashes.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/helloworld/.gradle/5.1.1/fileHashes/fileHashes.lock -------------------------------------------------------------------------------- /helloworld/.gradle/5.1.1/gc.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/helloworld/.gradle/5.1.1/gc.properties -------------------------------------------------------------------------------- /helloworld/.gradle/buildOutputCleanup/buildOutputCleanup.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/helloworld/.gradle/buildOutputCleanup/buildOutputCleanup.lock -------------------------------------------------------------------------------- /helloworld/.gradle/buildOutputCleanup/cache.properties: -------------------------------------------------------------------------------- 1 | #Thu Sep 19 16:55:09 CST 2019 2 | gradle.version=5.1.1 3 | -------------------------------------------------------------------------------- /helloworld/.gradle/vcs-1/gc.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/helloworld/.gradle/vcs-1/gc.properties -------------------------------------------------------------------------------- /helloworld/.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: 7a4c33425ddd78c54aba07d86f3f9a4a0051769b 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /helloworld/README.md: -------------------------------------------------------------------------------- 1 | # helloworld 2 | 3 | A new Flutter project. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) 13 | 14 | For help getting started with Flutter, view our 15 | [online documentation](https://flutter.dev/docs), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /helloworld/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 | -------------------------------------------------------------------------------- /helloworld/android/.settings/org.eclipse.buildship.core.prefs: -------------------------------------------------------------------------------- 1 | connection.project.dir= 2 | eclipse.preferences.version=1 3 | -------------------------------------------------------------------------------- /helloworld/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /helloworld/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /helloworld/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/helloworld/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /helloworld/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/helloworld/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /helloworld/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/helloworld/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /helloworld/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/helloworld/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /helloworld/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/helloworld/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /helloworld/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /helloworld/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /helloworld/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | google() 4 | jcenter() 5 | } 6 | 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:3.4.2' 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 | -------------------------------------------------------------------------------- /helloworld/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | -------------------------------------------------------------------------------- /helloworld/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip 7 | -------------------------------------------------------------------------------- /helloworld/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 | -------------------------------------------------------------------------------- /helloworld/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 | -------------------------------------------------------------------------------- /helloworld/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /helloworld/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /helloworld/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /helloworld/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /helloworld/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /helloworld/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildSystemType 6 | Original 7 | 8 | 9 | -------------------------------------------------------------------------------- /helloworld/ios/Runner/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : FlutterAppDelegate 5 | 6 | @end 7 | 8 | 9 | @interface NativeAppDelegate : UIResponder 10 | 11 | @property (strong, nonatomic) UIWindow *window; 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /helloworld/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/helloworld/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /helloworld/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/helloworld/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /helloworld/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/helloworld/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /helloworld/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/helloworld/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /helloworld/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/helloworld/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /helloworld/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/helloworld/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /helloworld/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/helloworld/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /helloworld/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/helloworld/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /helloworld/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/helloworld/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /helloworld/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/helloworld/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /helloworld/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/helloworld/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /helloworld/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/helloworld/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /helloworld/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/helloworld/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /helloworld/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/helloworld/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /helloworld/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/helloworld/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /helloworld/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 | -------------------------------------------------------------------------------- /helloworld/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/helloworld/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /helloworld/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/helloworld/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /helloworld/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/helloworld/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /helloworld/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. -------------------------------------------------------------------------------- /helloworld/ios/Runner/FlutterHomeViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // FlutterHomeViewController.h 3 | // Runner 4 | // 5 | // Created by txooo on 2019/9/17. 6 | // Copyright © 2019 The Chromium Authors. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface FlutterHomeViewController : FlutterViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /helloworld/ios/Runner/FlutterViewController+MethodChannel.h: -------------------------------------------------------------------------------- 1 | // 2 | // FlutterViewController+MethodChannel.h 3 | // Runner 4 | // 5 | // Created by txooo on 2019/9/17. 6 | // Copyright © 2019 The Chromium Authors. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface FlutterViewController (MethodChannel) 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /helloworld/ios/Runner/NativeViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // NativeViewController.h 3 | // Runner 4 | // 5 | // Created by txooo on 2019/9/17. 6 | // Copyright © 2019 The Chromium Authors. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface NativeViewController : UIViewController 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /helloworld/ios/Runner/Runner.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | aps-environment 6 | development 7 | 8 | 9 | -------------------------------------------------------------------------------- /helloworld/ios/Runner/SampleViewControl.h: -------------------------------------------------------------------------------- 1 | // 2 | // SampleViewControl.h 3 | // Runner 4 | // 5 | // Created by txooo on 2019/8/30. 6 | // Copyright © 2019 The Chromium Authors. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface SampleViewControl : NSObject 16 | 17 | - (instancetype)initWithFrame:(CGRect)frame viewIdentifier:(int64_t)viewIdentifier arguments:(id)args binaryMessenger:(NSObject *)messenger; 18 | @end 19 | 20 | NS_ASSUME_NONNULL_END 21 | -------------------------------------------------------------------------------- /helloworld/ios/Runner/SampleViewFactory.h: -------------------------------------------------------------------------------- 1 | // 2 | // SampleViewFactory.h 3 | // Runner 4 | // 5 | // Created by txooo on 2019/8/30. 6 | // Copyright © 2019 The Chromium Authors. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @protocol FlutterPlatformViewFactory; 12 | @protocol FlutterBinaryMessenger; 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface SampleViewFactory : NSObject 16 | 17 | - (instancetype)initWithMessenger:(NSObject *)messager; 18 | 19 | @end 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /helloworld/ios/Runner/SampleViewFactory.m: -------------------------------------------------------------------------------- 1 | // 2 | // SampleViewFactory.m 3 | // Runner 4 | // 5 | // Created by txooo on 2019/8/30. 6 | // Copyright © 2019 The Chromium Authors. All rights reserved. 7 | // 8 | 9 | #import "SampleViewFactory.h" 10 | #import 11 | #import "SampleViewControl.h" 12 | 13 | @class SampleViewControl; 14 | 15 | @implementation SampleViewFactory 16 | { 17 | NSObject *_messager; 18 | } 19 | 20 | - (instancetype)initWithMessenger:(NSObject *)messager { 21 | if (self = [super init]) { 22 | _messager = messager; 23 | } 24 | return self; 25 | } 26 | 27 | - (NSObject *)createArgsCodec { 28 | return [FlutterStandardMessageCodec sharedInstance]; 29 | } 30 | 31 | - (nonnull NSObject *)createWithFrame:(CGRect)frame viewIdentifier:(int64_t)viewId arguments:(id _Nullable)args { 32 | SampleViewControl *control = [[SampleViewControl alloc] initWithFrame:frame viewIdentifier:viewId arguments:args binaryMessenger:_messager]; 33 | return control; 34 | }; 35 | 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /helloworld/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 | // return UIApplicationMain(argc, argv, nil, NSStringFromClass([NativeAppDelegate class])); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /helloworld/lib/dart_layout/dart_align.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class AlignSampleApp extends StatelessWidget { 4 | const AlignSampleApp({Key key}) : super(key: key); 5 | 6 | @override 7 | Widget build(BuildContext context) { 8 | return MaterialApp( 9 | theme: ThemeData( 10 | primarySwatch: Colors.blue 11 | ), 12 | home: AlignSampleAppPage(), 13 | ); 14 | } 15 | } 16 | 17 | class AlignSampleAppPage extends StatelessWidget { 18 | const AlignSampleAppPage({Key key}) : super(key: key); 19 | 20 | @override 21 | Widget build(BuildContext context) { 22 | return Scaffold( 23 | appBar: AppBar( 24 | title: Text('Align'), 25 | ), 26 | body: Center( 27 | child: Container( 28 | height: 120.0, 29 | width: 80.0, 30 | color: Colors.blue[50], 31 | child: Align( 32 | alignment: Alignment.topRight, 33 | child: FlutterLogo( 34 | size: 60, 35 | ), 36 | ), 37 | ), 38 | ), 39 | ); 40 | } 41 | } -------------------------------------------------------------------------------- /helloworld/lib/dart_layout/dart_padding.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class PaddingSampleApp extends StatelessWidget { 4 | const PaddingSampleApp({Key key}) : super(key: key); 5 | 6 | @override 7 | Widget build(BuildContext context) { 8 | return MaterialApp( 9 | theme: ThemeData( 10 | primarySwatch: Colors.blue 11 | ), 12 | home: PaddingSampleAppPage(), 13 | ); 14 | } 15 | } 16 | 17 | class PaddingSampleAppPage extends StatelessWidget { 18 | const PaddingSampleAppPage({Key key}) : super(key: key); 19 | 20 | @override 21 | Widget build(BuildContext context) { 22 | return Scaffold( 23 | appBar: AppBar( 24 | title: Text('Padding'), 25 | ), 26 | body: Padding( 27 | padding: EdgeInsets.all(30), 28 | child: Text('Padding 是一个单Widget容器'), 29 | ), 30 | ); 31 | } 32 | } -------------------------------------------------------------------------------- /helloworld/lib/debug_develop/config.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class AppConfig extends InheritedWidget { 4 | AppConfig({ 5 | @required this.appName, 6 | @required this.apiBaseUrl, 7 | @required Widget child 8 | }) : super(child: child); 9 | final String appName; 10 | final String apiBaseUrl; // rootURL 11 | 12 | // 方便其子 Widget 在Widget树中找到它 13 | static AppConfig of(BuildContext context) { 14 | return context.inheritFromWidgetOfExactType(AppConfig); 15 | } 16 | 17 | // 判断是否需要子 Widget 更新。由于是应用入口,无需更新 18 | @override 19 | bool updateShouldNotify(InheritedWidget oldWidget) { 20 | // TODO: implement updateShouldNotify 21 | return false; 22 | } 23 | } -------------------------------------------------------------------------------- /helloworld/lib/debug_develop/debug_env.dart: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/helloworld/lib/debug_develop/debug_env.dart -------------------------------------------------------------------------------- /helloworld/lib/main_dev.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:helloworld/debug_develop/config.dart'; 3 | import 'package:helloworld/widget/theme_demo.dart'; 4 | import 'package:flutter/rendering.dart'; 5 | 6 | void main() { 7 | var configuredApp = AppConfig( 8 | appName: 'dev', // 主页标题 9 | apiBaseUrl: 'http://dev.example.com', 10 | child: MyApp(), 11 | ); 12 | runApp(configuredApp);// 启动 13 | 14 | } -------------------------------------------------------------------------------- /helloworld/lib/my-assets/localizable_strings.dart: -------------------------------------------------------------------------------- 1 | class Strings { 2 | static String welcomeMessage = 'Welcome to Flutter!'; 3 | } -------------------------------------------------------------------------------- /helloworld/lib/my-assets/myimg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/helloworld/lib/my-assets/myimg.png -------------------------------------------------------------------------------- /helloworld/lib/my-assets/timg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/helloworld/lib/my-assets/timg.gif -------------------------------------------------------------------------------- /helloworld/lib/theme_text/dart_theme.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class MaterialSampleApp extends StatelessWidget { 4 | 5 | @override 6 | Widget build(BuildContext context) { 7 | return MaterialApp( 8 | theme: ThemeData( 9 | // 设置主题色是蓝色 10 | primarySwatch: Colors.blue, 11 | // 设置文字选中时为红色 12 | textSelectionColor: Colors.red, 13 | ), 14 | home: MaterialSampleAppPage(), 15 | ); 16 | } 17 | } 18 | 19 | class MaterialSampleAppPage extends StatelessWidget { 20 | const MaterialSampleAppPage({Key key}) : super(key: key); 21 | 22 | @override 23 | Widget build(BuildContext context) { 24 | return Scaffold( 25 | appBar: AppBar( 26 | title: Text('Theme'), 27 | ), 28 | body: Center( 29 | // child: Text( 30 | // '自定义字体 Custom Font', 31 | // style: TextStyle(fontFamily: 'your font family', fontSize: 20), 32 | // ), 33 | child: Icon( 34 | // 使用iconfont 35 | IconData( 36 | 0xea74, 37 | fontFamily:'iconfont', 38 | ), 39 | color: Colors.red, 40 | size: 100, 41 | ) 42 | ), 43 | ); 44 | } 45 | } -------------------------------------------------------------------------------- /helloworld/lib/theme_text/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/helloworld/lib/theme_text/iconfont.ttf -------------------------------------------------------------------------------- /helloworld/lib/widget/dart_custom_widget.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class CustomButtonSampleApp extends StatelessWidget { 4 | @override 5 | Widget build(BuildContext context) { 6 | return MaterialApp( 7 | title: 'CustonButton', 8 | theme: ThemeData( 9 | primarySwatch: Colors.blue 10 | ), 11 | home: Center( 12 | child: CustomButton('Hello'), 13 | ), 14 | ); 15 | } 16 | } 17 | 18 | class CustomButton extends StatelessWidget { 19 | final String label; 20 | CustomButton(this.label); 21 | 22 | @override 23 | Widget build(BuildContext context) { 24 | return RaisedButton( 25 | onPressed: (){}, 26 | color: Colors.yellow, 27 | textColor: Colors.red, 28 | child: Text(label), 29 | ); 30 | } 31 | } -------------------------------------------------------------------------------- /helloworld/res/values/strings_en.arb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/helloworld/res/values/strings_en.arb -------------------------------------------------------------------------------- /helloworld/res/values/strings_zh.arb: -------------------------------------------------------------------------------- 1 | { 2 | "app_title": "App", 3 | "main_title": "主标题" 4 | } -------------------------------------------------------------------------------- /shoping_cart/.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: 7a4c33425ddd78c54aba07d86f3f9a4a0051769b 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /shoping_cart/README.md: -------------------------------------------------------------------------------- 1 | # shoping_cart 2 | 3 | A new Flutter project. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) 13 | 14 | For help getting started with Flutter, view our 15 | [online documentation](https://flutter.dev/docs), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /shoping_cart/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /shoping_cart/android/app/src/main/java/com/example/shoping_cart/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.shoping_cart; 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 | -------------------------------------------------------------------------------- /shoping_cart/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /shoping_cart/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/shoping_cart/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /shoping_cart/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/shoping_cart/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /shoping_cart/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/shoping_cart/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /shoping_cart/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/shoping_cart/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /shoping_cart/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/shoping_cart/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /shoping_cart/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /shoping_cart/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /shoping_cart/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 | -------------------------------------------------------------------------------- /shoping_cart/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | -------------------------------------------------------------------------------- /shoping_cart/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 | -------------------------------------------------------------------------------- /shoping_cart/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 | -------------------------------------------------------------------------------- /shoping_cart/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 | -------------------------------------------------------------------------------- /shoping_cart/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /shoping_cart/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /shoping_cart/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /shoping_cart/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /shoping_cart/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildSystemType 6 | Original 7 | 8 | 9 | -------------------------------------------------------------------------------- /shoping_cart/ios/Runner/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : FlutterAppDelegate 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /shoping_cart/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 | -------------------------------------------------------------------------------- /shoping_cart/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/shoping_cart/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /shoping_cart/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/shoping_cart/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /shoping_cart/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/shoping_cart/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /shoping_cart/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/shoping_cart/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /shoping_cart/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/shoping_cart/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /shoping_cart/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/shoping_cart/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /shoping_cart/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/shoping_cart/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /shoping_cart/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/shoping_cart/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /shoping_cart/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/shoping_cart/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /shoping_cart/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/shoping_cart/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /shoping_cart/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/shoping_cart/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /shoping_cart/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/shoping_cart/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /shoping_cart/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/shoping_cart/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /shoping_cart/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/shoping_cart/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /shoping_cart/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/shoping_cart/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /shoping_cart/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 | -------------------------------------------------------------------------------- /shoping_cart/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/shoping_cart/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /shoping_cart/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/shoping_cart/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /shoping_cart/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lingjye/Flutter-Learning/5289db6856929db4a4cbcf14ea6732bd43727511/shoping_cart/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /shoping_cart/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. -------------------------------------------------------------------------------- /shoping_cart/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 | -------------------------------------------------------------------------------- /shoping_cart/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:shoping_cart/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 | --------------------------------------------------------------------------------