├── .flutter-plugins-dependencies ├── .gitattributes ├── .gitignore ├── .metadata ├── README.md ├── android ├── app │ ├── build.gradle │ └── src │ │ ├── debug │ │ └── AndroidManifest.xml │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── com │ │ │ │ └── ctrip │ │ │ │ └── flutter_ctrip │ │ │ │ └── MainActivity.java │ │ └── res │ │ │ ├── drawable │ │ │ └── launch_background.xml │ │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ │ └── values │ │ │ └── styles.xml │ │ └── profile │ │ └── AndroidManifest.xml ├── asr_plugin │ ├── .gitignore │ ├── build.gradle │ ├── libs │ │ └── bdasr_V3_20191210_81acdf5.jar │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── example │ │ │ └── plugin │ │ │ └── asr │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── plugin │ │ │ │ └── asr │ │ │ │ ├── AsrManager.java │ │ │ │ ├── AsrPlugin.java │ │ │ │ ├── OnAsrListener.java │ │ │ │ ├── RecogEventAdapter.java │ │ │ │ ├── RecogResult.java │ │ │ │ └── ResultStateful.java │ │ ├── jniLibs │ │ │ ├── arm64-v8a │ │ │ │ ├── libBaiduSpeechSDK.so │ │ │ │ └── libvad.dnn.so │ │ │ ├── x86 │ │ │ │ ├── libBaiduSpeechSDK.so │ │ │ │ └── libvad.dnn.so │ │ │ └── x86_64 │ │ │ │ ├── libBaiduSpeechSDK.so │ │ │ │ └── libvad.dnn.so │ │ └── res │ │ │ └── values │ │ │ └── strings.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── example │ │ └── plugin │ │ └── asr │ │ └── ExampleUnitTest.java ├── build.gradle ├── flutter_ctrip_key_store.jks ├── gradle.properties ├── gradle │ └── wrapper │ │ └── gradle-wrapper.properties ├── key.properties └── settings.gradle ├── fonts ├── PingFang-Italic.ttf ├── PingFang-Regular.ttf └── PingFang_Bold.ttf ├── images ├── grid-nav-items-dingzhi.png ├── grid-nav-items-flight.png ├── grid-nav-items-hotel.png ├── grid-nav-items-jhj.png ├── grid-nav-items-minsu.png ├── grid-nav-items-train.png ├── grid-nav-items-travel.png ├── kefu.png ├── lvpai.png ├── lvpai_active.png ├── lvpai_issue_position.png ├── lvpai_issue_sight.png ├── lvpai_search_list.png ├── lvpai_search_tag.png ├── lvxiang.png ├── mude.png ├── mude_active.png ├── sousuo.png ├── type_channelgroup.png ├── type_channelgs.png ├── type_channelplane.png ├── type_channeltrain.png ├── type_cruise.png ├── type_district.png ├── type_food.png ├── type_hotel.png ├── type_huodong.png ├── type_shop.png ├── type_sight.png ├── type_ticket.png ├── type_travelgroup.png ├── user1.png ├── wode.png ├── wode_active.png ├── xiaoxi_grey.png ├── xiaoxi_white.png ├── xiecheng.png ├── xiecheng_active.png └── yuyin.png ├── ios ├── Flutter │ ├── AppFrameworkInfo.plist │ ├── Debug.xcconfig │ ├── Flutter.podspec │ ├── Release.xcconfig │ └── flutter_export_environment.sh ├── Plugin │ └── ASRPlugin │ │ ├── AsrManager.h │ │ ├── AsrManager.m │ │ ├── AsrPlugin.h │ │ ├── AsrPlugin.m │ │ ├── BDSClientEASRResources │ │ ├── bds_easr_basic_model.dat │ │ ├── bds_easr_dnn_wakeup_model.dat │ │ ├── bds_easr_gramm.dat │ │ ├── bds_easr_mfe_cmvn.dat │ │ ├── bds_easr_mfe_dnn.dat │ │ ├── bds_easr_wakeup_words.dat │ │ └── bds_license.dat │ │ ├── BDSClientResources │ │ ├── Theme │ │ │ ├── darkBlue.bundle │ │ │ │ ├── bdvrclosed@2x.png │ │ │ │ ├── bdvrclosed_highlight@2x.png │ │ │ │ ├── bdvrdialoganmition_mask@2x.png │ │ │ │ ├── bdvrdialogbg@2x.png │ │ │ │ ├── bdvrhelp@2x.png │ │ │ │ ├── bdvrhelp_highlight@2x.png │ │ │ │ ├── bdvrleftbutton@2x.png │ │ │ │ ├── bdvrleftbutton_highlight@2x.png │ │ │ │ ├── bdvrrightbtn@2x.png │ │ │ │ ├── bdvrrightbtn_highlight@2x.png │ │ │ │ ├── bdvrtextmask@2x.png │ │ │ │ ├── bdvrwholebtb@2x.png │ │ │ │ ├── bdvrwholebtb_highlight@2x.png │ │ │ │ ├── bdvrwholebtn@2x.png │ │ │ │ ├── bdvrwholebtn_highlight@2x.png │ │ │ │ └── themeDesc.plist │ │ │ ├── darkGreen.bundle │ │ │ │ ├── bdvrclosed@2x.png │ │ │ │ ├── bdvrclosed_highlight@2x.png │ │ │ │ ├── bdvrdialoganmition_mask@2x.png │ │ │ │ ├── bdvrdialogbg@2x.png │ │ │ │ ├── bdvrhelp@2x.png │ │ │ │ ├── bdvrhelp_highlight@2x.png │ │ │ │ ├── bdvrleftbutton@2x.png │ │ │ │ ├── bdvrleftbutton_highlight@2x.png │ │ │ │ ├── bdvrrightbtn@2x.png │ │ │ │ ├── bdvrrightbtn_highlight@2x.png │ │ │ │ ├── bdvrtextmask@2x.png │ │ │ │ ├── bdvrwholebtb@2x.png │ │ │ │ ├── bdvrwholebtb_highlight@2x.png │ │ │ │ ├── bdvrwholebtn@2x.png │ │ │ │ ├── bdvrwholebtn_highlight@2x.png │ │ │ │ └── themeDesc.plist │ │ │ ├── darkOrange.bundle │ │ │ │ ├── bdvrclosed@2x.png │ │ │ │ ├── bdvrclosed_highlight@2x.png │ │ │ │ ├── bdvrdialoganmition_mask@2x.png │ │ │ │ ├── bdvrdialogbg@2x.png │ │ │ │ ├── bdvrhelp@2x.png │ │ │ │ ├── bdvrhelp_highlight@2x.png │ │ │ │ ├── bdvrleftbutton@2x.png │ │ │ │ ├── bdvrleftbutton_highlight@2x.png │ │ │ │ ├── bdvrrightbtn@2x.png │ │ │ │ ├── bdvrrightbtn_highlight@2x.png │ │ │ │ ├── bdvrtextmask@2x.png │ │ │ │ ├── bdvrwholebtb@2x.png │ │ │ │ ├── bdvrwholebtb_highlight@2x.png │ │ │ │ ├── bdvrwholebtn@2x.png │ │ │ │ ├── bdvrwholebtn_highlight@2x.png │ │ │ │ └── themeDesc.plist │ │ │ ├── darkRed.bundle │ │ │ │ ├── bdvrclosed@2x.png │ │ │ │ ├── bdvrclosed_highlight@2x.png │ │ │ │ ├── bdvrdialoganmition_mask@2x.png │ │ │ │ ├── bdvrdialogbg@2x.png │ │ │ │ ├── bdvrhelp@2x.png │ │ │ │ ├── bdvrhelp_highlight@2x.png │ │ │ │ ├── bdvrleftbutton@2x.png │ │ │ │ ├── bdvrleftbutton_highlight@2x.png │ │ │ │ ├── bdvrrightbtn@2x.png │ │ │ │ ├── bdvrrightbtn_highlight@2x.png │ │ │ │ ├── bdvrtextmask@2x.png │ │ │ │ ├── bdvrwholebtb@2x.png │ │ │ │ ├── bdvrwholebtb_highlight@2x.png │ │ │ │ ├── bdvrwholebtn@2x.png │ │ │ │ ├── bdvrwholebtn_highlight@2x.png │ │ │ │ └── themeDesc.plist │ │ │ ├── defaultFullScreenTheme.bundle │ │ │ │ ├── animation@2x.png │ │ │ │ ├── animation@3x.png │ │ │ │ ├── application@2x.png │ │ │ │ ├── application@3x.png │ │ │ │ ├── bdvrclosed@2x.png │ │ │ │ ├── bdvrclosed@3x.png │ │ │ │ ├── bdvrclosed_highlight@2x.png │ │ │ │ ├── bdvrclosed_highlight@3x.png │ │ │ │ ├── bdvrdialoganmition_mask@2x.png │ │ │ │ ├── bdvrerror@2x.png │ │ │ │ ├── bdvrerror@3x.png │ │ │ │ ├── bdvrhelp@2x.png │ │ │ │ ├── bdvrhelp_highlight@2x.png │ │ │ │ ├── bdvrleftbutton@2x.png │ │ │ │ ├── bdvrleftbutton_highlight@2x.png │ │ │ │ ├── bdvrnoconnection@2x.png │ │ │ │ ├── bdvrnoconnection@3x.png │ │ │ │ ├── bdvrretry@2x.png │ │ │ │ ├── bdvrretry_highlight@2x.png │ │ │ │ ├── bdvrrightbtn@2x.png │ │ │ │ ├── bdvrrightbtn_highlight@2x.png │ │ │ │ ├── bdvrtextmask@2x.png │ │ │ │ ├── bdvrwholebtb@2x.png │ │ │ │ ├── bdvrwholebtb_highlight@2x.png │ │ │ │ ├── bdvrwholebtn@2x.png │ │ │ │ ├── bdvrwholebtn_highlight@2x.png │ │ │ │ ├── calendar@2x.png │ │ │ │ ├── calendar@3x.png │ │ │ │ ├── dividing_line@2x.png │ │ │ │ ├── dividing_line@3x.png │ │ │ │ ├── fiction@2x.png │ │ │ │ ├── fiction@3x.png │ │ │ │ ├── film@2x.png │ │ │ │ ├── film@3x.png │ │ │ │ ├── game@2x.png │ │ │ │ ├── game@3x.png │ │ │ │ ├── health@2x.png │ │ │ │ ├── health@3x.png │ │ │ │ ├── help@2x.png │ │ │ │ ├── help@3x.png │ │ │ │ ├── life_service@2x.png │ │ │ │ ├── life_service@3x.png │ │ │ │ ├── mother_and_baby@2x.png │ │ │ │ ├── mother_and_baby@3x.png │ │ │ │ ├── music@2x.png │ │ │ │ ├── music@3x.png │ │ │ │ ├── praxis@2x.png │ │ │ │ ├── praxis@3x.png │ │ │ │ ├── stock@2x.png │ │ │ │ ├── stock@3x.png │ │ │ │ ├── themeDesc.plist │ │ │ │ ├── tv_drama@2x.png │ │ │ │ ├── tv_drama@3x.png │ │ │ │ ├── whether@2x.png │ │ │ │ └── whether@3x.png │ │ │ ├── defaultTheme.bundle │ │ │ │ ├── bdvrclosed@2x.png │ │ │ │ ├── bdvrclosed_highlight@2x.png │ │ │ │ ├── bdvrdialoganmition_mask@2x.png │ │ │ │ ├── bdvrhelp@2x.png │ │ │ │ ├── bdvrhelp_highlight@2x.png │ │ │ │ ├── bdvrleftbutton@2x.png │ │ │ │ ├── bdvrleftbutton_highlight@2x.png │ │ │ │ ├── bdvrrightbtn@2x.png │ │ │ │ ├── bdvrrightbtn_highlight@2x.png │ │ │ │ ├── bdvrtextmask@2x.png │ │ │ │ ├── bdvrwholebtb@2x.png │ │ │ │ ├── bdvrwholebtb_highlight@2x.png │ │ │ │ ├── bdvrwholebtn@2x.png │ │ │ │ ├── bdvrwholebtn_highlight@2x.png │ │ │ │ └── themeDesc.plist │ │ │ ├── lightBlue.bundle │ │ │ │ ├── bdvrclosed@2x.png │ │ │ │ ├── bdvrclosed_highlight@2x.png │ │ │ │ ├── bdvrdialoganmition_mask@2x.png │ │ │ │ ├── bdvrdialogbg@2x.png │ │ │ │ ├── bdvrhelp@2x.png │ │ │ │ ├── bdvrhelp_highlight@2x.png │ │ │ │ ├── bdvrleftbutton@2x.png │ │ │ │ ├── bdvrleftbutton_highlight@2x.png │ │ │ │ ├── bdvrrightbtn@2x.png │ │ │ │ ├── bdvrrightbtn_highlight@2x.png │ │ │ │ ├── bdvrtextmask@2x.png │ │ │ │ ├── bdvrwholebtb@2x.png │ │ │ │ ├── bdvrwholebtb_highlight@2x.png │ │ │ │ ├── bdvrwholebtn@2x.png │ │ │ │ ├── bdvrwholebtn_highlight@2x.png │ │ │ │ └── themeDesc.plist │ │ │ ├── lightGreen.bundle │ │ │ │ ├── bdvrclosed@2x.png │ │ │ │ ├── bdvrclosed_highlight@2x.png │ │ │ │ ├── bdvrdialoganmition_mask@2x.png │ │ │ │ ├── bdvrdialogbg@2x.png │ │ │ │ ├── bdvrhelp@2x.png │ │ │ │ ├── bdvrhelp_highlight@2x.png │ │ │ │ ├── bdvrleftbutton@2x.png │ │ │ │ ├── bdvrleftbutton_highlight@2x.png │ │ │ │ ├── bdvrrightbtn@2x.png │ │ │ │ ├── bdvrrightbtn_highlight@2x.png │ │ │ │ ├── bdvrtextmask@2x.png │ │ │ │ ├── bdvrwholebtb@2x.png │ │ │ │ ├── bdvrwholebtb_highlight@2x.png │ │ │ │ ├── bdvrwholebtn@2x.png │ │ │ │ ├── bdvrwholebtn_highlight@2x.png │ │ │ │ └── themeDesc.plist │ │ │ ├── lightOrange.bundle │ │ │ │ ├── bdvrclosed@2x.png │ │ │ │ ├── bdvrclosed_highlight@2x.png │ │ │ │ ├── bdvrdialoganmition_mask@2x.png │ │ │ │ ├── bdvrdialogbg@2x.png │ │ │ │ ├── bdvrhelp@2x.png │ │ │ │ ├── bdvrhelp_highlight@2x.png │ │ │ │ ├── bdvrleftbutton@2x.png │ │ │ │ ├── bdvrleftbutton_highlight@2x.png │ │ │ │ ├── bdvrrightbtn@2x.png │ │ │ │ ├── bdvrrightbtn_highlight@2x.png │ │ │ │ ├── bdvrtextmask@2x.png │ │ │ │ ├── bdvrwholebtb@2x.png │ │ │ │ ├── bdvrwholebtb_highlight@2x.png │ │ │ │ ├── bdvrwholebtn@2x.png │ │ │ │ ├── bdvrwholebtn_highlight@2x.png │ │ │ │ └── themeDesc.plist │ │ │ └── lightRed.bundle │ │ │ │ ├── bdvrclosed@2x.png │ │ │ │ ├── bdvrclosed_highlight@2x.png │ │ │ │ ├── bdvrdialoganmition_mask@2x.png │ │ │ │ ├── bdvrdialogbg@2x.png │ │ │ │ ├── bdvrhelp@2x.png │ │ │ │ ├── bdvrhelp_highlight@2x.png │ │ │ │ ├── bdvrleftbutton@2x.png │ │ │ │ ├── bdvrleftbutton_highlight@2x.png │ │ │ │ ├── bdvrrightbtn@2x.png │ │ │ │ ├── bdvrrightbtn_highlight@2x.png │ │ │ │ ├── bdvrtextmask@2x.png │ │ │ │ ├── bdvrwholebtb@2x.png │ │ │ │ ├── bdvrwholebtb_highlight@2x.png │ │ │ │ ├── bdvrwholebtn@2x.png │ │ │ │ ├── bdvrwholebtn_highlight@2x.png │ │ │ │ └── themeDesc.plist │ │ └── Tone │ │ │ ├── record_cancel.caf │ │ │ ├── record_end.caf │ │ │ ├── record_fail.caf │ │ │ ├── record_start.caf │ │ │ └── record_success.caf │ │ └── Headers │ │ ├── BDSASRDefines.h │ │ ├── BDSASRParameters.h │ │ └── BDSEventManager.h ├── 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 ├── dao │ ├── destination_dao.dart │ ├── destination_search_dao.dart │ ├── home_dao.dart │ ├── search_dao.dart │ ├── trave_hot_keyword_dao.dart │ ├── trave_search_dao.dart │ ├── trave_search_hot_dao.dart │ ├── travel_dao.dart │ ├── travel_params_dao.dart │ └── travel_tab_dao.dart ├── main.dart ├── model │ ├── common_model.dart │ ├── config_model.dart │ ├── destination_model.dart │ ├── destination_search_model.dart │ ├── grid_nav_model.dart │ ├── home_model.dart │ ├── sales_box_model.dart │ ├── seach_model.dart │ ├── travel_hot_keyword_model.dart │ ├── travel_model.dart │ ├── travel_params_model.dart │ ├── travel_search_hot_model.dart │ ├── travel_search_model.dart │ └── travel_tab_model.dart ├── navigator │ └── tab_navigater.dart ├── pages │ ├── destination_page.dart │ ├── destination_search_page.dart │ ├── home_page.dart │ ├── my_page.dart │ ├── search_page.dart │ ├── speak_page.dart │ ├── test_page.dart │ ├── travel_page.dart │ ├── travel_search_page.dart │ └── travel_tab_page.dart ├── plugin │ ├── asr_manager.dart │ ├── side_page_view.dart │ ├── square_swiper_pagination.dart │ └── vertical_tab_view.dart ├── util │ └── navigator_util.dart └── widget │ ├── grid_nav.dart │ ├── grid_nav_new.dart │ ├── loading_container.dart │ ├── local_nav.dart │ ├── sales_box.dart │ ├── scalable_box.dart │ ├── search_bar.dart │ ├── sub_nav.dart │ └── webview.dart ├── pubspec.lock ├── pubspec.yaml └── test └── widget_test.dart /.flutter-plugins-dependencies: -------------------------------------------------------------------------------- 1 | {"_info":"// This is a generated file; do not edit or check into version control.","dependencyGraph":[{"name":"flutter_webview_plugin","dependencies":[]}]} -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.a filter=lfs diff=lfs merge=lfs -text 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | 12 | # IntelliJ related 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | 18 | # Visual Studio Code related 19 | .vscode/ 20 | 21 | # Flutter/Dart/Pub related 22 | **/doc/api/ 23 | .dart_tool/ 24 | .flutter-plugins 25 | .packages 26 | .pub-cache/ 27 | .pub/ 28 | /build/ 29 | 30 | # Android related 31 | **/android/**/gradle-wrapper.jar 32 | **/android/.gradle 33 | **/android/captures/ 34 | **/android/gradlew 35 | **/android/gradlew.bat 36 | **/android/local.properties 37 | **/android/**/GeneratedPluginRegistrant.java 38 | 39 | # iOS/XCode related 40 | **/ios/**/*.mode1v3 41 | **/ios/**/*.mode2v3 42 | **/ios/**/*.moved-aside 43 | **/ios/**/*.pbxuser 44 | **/ios/**/*.perspectivev3 45 | **/ios/**/*sync/ 46 | **/ios/**/.sconsign.dblite 47 | **/ios/**/.tags* 48 | **/ios/**/.vagrant/ 49 | **/ios/**/DerivedData/ 50 | **/ios/**/Icon? 51 | **/ios/**/Pods/ 52 | **/ios/**/.symlinks/ 53 | **/ios/**/profile 54 | **/ios/**/xcuserdata 55 | **/ios/.generated/ 56 | **/ios/Flutter/App.framework 57 | **/ios/Flutter/Flutter.framework 58 | **/ios/Flutter/Generated.xcconfig 59 | **/ios/Flutter/app.flx 60 | **/ios/Flutter/app.zip 61 | **/ios/Flutter/flutter_assets/ 62 | **/ios/ServiceDefinitions.json 63 | **/ios/Runner/GeneratedPluginRegistrant.* 64 | 65 | # Exceptions to above rules. 66 | !**/ios/**/default.mode1v3 67 | !**/ios/**/default.mode2v3 68 | !**/ios/**/default.pbxuser 69 | !**/ios/**/default.perspectivev3 70 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages 71 | 72 | **/ios/Plugin/ASRPlugin/BDSClientLib/ 73 | 74 | flutter_ctrip_key_store 75 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![logo](https://cdn.lishaoy.net/flutterCtrip/iOS-andorid.png) 2 | 3 | ## 跨端(iOS/Android)移动应用创建携程App 4 | 5 | [![GitHub release (latest by date)](https://img.shields.io/github/v/release/persilee/flutter_ctrip?color=brightgreen)](https://github.com/persilee/flutter_ctrip/releases) [![author](https://img.shields.io/badge/author-persilee-orange.svg)](https://github.com/persilee) [![blog](https://img.shields.io/badge/blog-lishaoy.net-blue.svg)](https://h.lishaoy.net) 6 | 7 | 基于 **Flutter** 的跨平台(iOS/Android)移动应用创建携程App,高仿大厂 **App** 项目 *(项目使用的接口都是来自线上真实App抓包而来,可以做到和线上项目相同的效果)* 8 | 9 | ### 项目效果预览图 10 | 11 | |![no-shadow](https://cdn.lishaoy.net/flutterCtrip/appBar.gif "appBar" )|![no-shadow](https://cdn.lishaoy.net/flutterCtrip/searchBar.gif "searchBar" )| 12 | |:---:|:---:| 13 | |![no-shadow](https://cdn.lishaoy.net/flutterCtrip/speak.gif "speak" )|![no-shadow](https://cdn.lishaoy.net/flutterCtrip/banner.gif "banner" )| 14 | |![no-shadow](https://cdn.lishaoy.net/flutterCtrip/destination.gif "destination" )|![no-shadow](https://cdn.lishaoy.net/flutterCtrip/destination-search.gif "destination" )| 15 | |![no-shadow](https://cdn.lishaoy.net/flutterCtrip/travel-search.gif "travel-search" )|| 16 | 17 | 大家也可以,[移步这里点击观看视频](https://www.bilibili.com/video/BV16p4y1Q71f/) (可点击齿轮设置隐藏黑边) 18 | 19 | 或者安装体验(Android):[[FCtrip.apk](https://github.com/persilee/flutter_ctrip/releases/download/v1.0.1/app-release-v1.0.1.apk)],iOS请自行运行代码安装。 20 | 21 | ![手机扫描二维码安装](https://www.pgyer.com/app/qrcode/HqqH "手机扫描二维码安装") 22 | 23 | Blog地址 : [https://h.lishaoy.net/flutterctrip](https://h.lishaoy.net/flutterctrip) 24 | 25 | ### 特别提醒 26 | 27 | 由于百度AI语言识别SDK包的 `libBaiduSpeechSDK.a` 有 **184.2M**,放到GitHub上下载很慢,所以,请[点击下载 libBaiduSpeechSDK.a 文件](https://ai.baidu.com/download?sdkId=32), 28 | 解压后,把 `BDSClientLib/libBaiduSpeechSDK.a` 目录放到 `flutter_ctrip/ios/Plugin/ASRPlugin/` 目录下。 29 | 30 | 如想了解更多关于 **Flutter** 信息,请关注我的博客文章 31 | 32 | | 序号 | 文章 | 33 | |:----:|:-------------------------------------------------------------- | 34 | | 1 | [Flutter 初识](https://h.lishaoy.net/beautifulFlutter.html) | 35 | | 2 | [Flutter 环境搭建](https://h.lishaoy.net/flutterInstall.html) | 36 | | 3 | [Flutter 初体验(实战)](https://h.lishaoy.net/fristFlutter.html) | 37 | | 4 | [Flutter 10天高仿大厂App及小技巧积累总结(实战)](https://h.lishaoy.net/flutterctrip) | 38 | | 5 | [Flutter Android Flutter 混合开发高仿大厂App(实战)](https://h.lishaoy.net/androidctrip) | 39 | | 6 | [Flutter FutureBuilder and StreamBuilder 优雅的构建高质量项目](https://h.lishaoy.net/futruebuilder-streambuilder) | 40 | | 7 | [Flutter (Flare) 最有趣用户交互动画没有之一](https://h.lishaoy.net/flutter-flare) | 41 | 42 | ### 更新日志 43 | 44 | - 202-09-15 22:36 优化 搜索框提示文字错位问题 45 | - 202-06-25 04:55 优化 状态栏(使用 SystemUiOverlayStyle 实现沉浸式状态栏) 46 | - 202-06-25 01:55 优化 旅拍页面(新增加载更多指示器) 47 | - 202-06-24 23:56 优化 tab navigation(使用 AutomaticKeepAliveClientMixin 保活页面,加入页面切换动画) 48 | 49 | -------------------------------------------------------------------------------- /android/app/build.gradle: -------------------------------------------------------------------------------- 1 | def localProperties = new Properties() 2 | def localPropertiesFile = rootProject.file('local.properties') 3 | if (localPropertiesFile.exists()) { 4 | localPropertiesFile.withReader('UTF-8') { reader -> 5 | localProperties.load(reader) 6 | } 7 | } 8 | 9 | def flutterRoot = localProperties.getProperty('flutter.sdk') 10 | if (flutterRoot == null) { 11 | throw new FileNotFoundException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") 12 | } 13 | 14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode') 15 | if (flutterVersionCode == null) { 16 | flutterVersionCode = '1' 17 | } 18 | 19 | def flutterVersionName = localProperties.getProperty('flutter.versionName') 20 | if (flutterVersionName == null) { 21 | flutterVersionName = '1.0' 22 | } 23 | 24 | apply plugin: 'com.android.application' 25 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" 26 | 27 | def keystoreProperties = new Properties() 28 | def keystorePropertiesFile = rootProject.file('key.properties') 29 | if (keystorePropertiesFile.exists()) { 30 | keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) 31 | } 32 | 33 | android { 34 | compileSdkVersion 28 35 | 36 | lintOptions { 37 | disable 'InvalidPackage' 38 | } 39 | 40 | defaultConfig { 41 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). 42 | applicationId "com.ctrip.flutter_ctrip" 43 | minSdkVersion 16 44 | targetSdkVersion 28 45 | versionCode flutterVersionCode.toInteger() 46 | versionName flutterVersionName 47 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 48 | ndk { 49 | abiFilters "armeabi-v7a","arm64-v8a","x86_64","x86" 50 | // abiFilters "armeabi-v7a" 51 | } 52 | } 53 | 54 | signingConfigs { 55 | release { 56 | keyAlias keystoreProperties['keyAlias'] 57 | keyPassword keystoreProperties['keyPassword'] 58 | storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null 59 | storePassword keystoreProperties['storePassword'] 60 | } 61 | } 62 | 63 | buildTypes { 64 | release { 65 | signingConfig signingConfigs.release 66 | } 67 | } 68 | 69 | packagingOptions { 70 | pickFirst 'lib/x86_64/libflutter.so' 71 | pickFirst 'lib/x86/libflutter.so' 72 | pickFirst 'lib/arm64-v8a/libflutter.so' 73 | pickFirst 'lib/armeabi-v7a/libflutter.so' 74 | pickFirst 'lib/arm64-v8a/libapp.so' 75 | pickFirst 'lib/armeabi-v7a/libapp.so' 76 | pickFirst 'lib/x86_64/libapp.so' 77 | } 78 | } 79 | 80 | flutter { 81 | source '../..' 82 | } 83 | 84 | dependencies { 85 | testImplementation 'junit:junit:4.12' 86 | androidTestImplementation 'androidx.test:runner:1.1.1' 87 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' 88 | implementation project(':asr_plugin') 89 | } 90 | -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 10 | 15 | 22 | 26 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /android/app/src/main/java/com/ctrip/flutter_ctrip/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.ctrip.flutter_ctrip; 2 | 3 | import android.os.Bundle; 4 | 5 | import com.example.plugin.asr.AsrPlugin; 6 | 7 | import io.flutter.app.FlutterActivity; 8 | import io.flutter.plugins.GeneratedPluginRegistrant; 9 | 10 | public class MainActivity extends FlutterActivity { 11 | @Override 12 | protected void onCreate(Bundle savedInstanceState) { 13 | super.onCreate(savedInstanceState); 14 | GeneratedPluginRegistrant.registerWith(this); 15 | registerSelfPlugin(); 16 | } 17 | 18 | private void registerSelfPlugin() { 19 | AsrPlugin.registerWith(registrarFor("com.example.plugin.asr.AsrPlugin")); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/asr_plugin/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /android/asr_plugin/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | def localProperties = new Properties() 4 | def localPropertiesFile = rootProject.file('local.properties') 5 | if (localPropertiesFile.exists()) { 6 | localPropertiesFile.withReader('UTF-8') { reader -> 7 | localProperties.load(reader) 8 | } 9 | } 10 | 11 | def flutterRoot = localProperties.getProperty('flutter.sdk') 12 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" 13 | android { 14 | compileSdkVersion 28 15 | buildToolsVersion "29.0.0" 16 | 17 | 18 | defaultConfig { 19 | minSdkVersion 15 20 | targetSdkVersion 28 21 | versionCode 1 22 | versionName "1.0" 23 | 24 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 25 | 26 | } 27 | 28 | buildTypes { 29 | release { 30 | minifyEnabled false 31 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 32 | } 33 | } 34 | 35 | } 36 | 37 | flutter { 38 | source '../..' 39 | } 40 | 41 | dependencies { 42 | implementation fileTree(dir: 'libs', include: ['*.jar']) 43 | 44 | implementation 'androidx.appcompat:appcompat:1.1.0' 45 | testImplementation 'junit:junit:4.12' 46 | androidTestImplementation 'androidx.test:runner:1.2.0' 47 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' 48 | } 49 | -------------------------------------------------------------------------------- /android/asr_plugin/libs/bdasr_V3_20191210_81acdf5.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/android/asr_plugin/libs/bdasr_V3_20191210_81acdf5.jar -------------------------------------------------------------------------------- /android/asr_plugin/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -keep class com.baidu.speech.**{*;} -------------------------------------------------------------------------------- /android/asr_plugin/src/androidTest/java/com/example/plugin/asr/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.example.plugin.asr; 2 | 3 | import android.content.Context; 4 | 5 | import androidx.test.InstrumentationRegistry; 6 | import androidx.test.runner.AndroidJUnit4; 7 | 8 | import org.junit.Test; 9 | import org.junit.runner.RunWith; 10 | 11 | import static org.junit.Assert.*; 12 | 13 | /** 14 | * Instrumented test, which will execute on an Android device. 15 | * 16 | * @see Testing documentation 17 | */ 18 | @RunWith(AndroidJUnit4.class) 19 | public class ExampleInstrumentedTest { 20 | @Test 21 | public void useAppContext() { 22 | // Context of the app under test. 23 | Context appContext = InstrumentationRegistry.getTargetContext(); 24 | 25 | assertEquals("com.example.plugin.asr.test", appContext.getPackageName()); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /android/asr_plugin/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 12 | 15 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /android/asr_plugin/src/main/java/com/example/plugin/asr/AsrManager.java: -------------------------------------------------------------------------------- 1 | package com.example.plugin.asr; 2 | 3 | import android.content.Context; 4 | import android.util.Log; 5 | 6 | import com.baidu.speech.EventManager; 7 | import com.baidu.speech.EventManagerFactory; 8 | import com.baidu.speech.asr.SpeechConstant; 9 | 10 | import org.json.JSONObject; 11 | 12 | import java.util.Map; 13 | 14 | public class AsrManager { 15 | private static final String TAG = "AsrManager"; 16 | /** 17 | * SDK 内部核心 EventManager 类 18 | */ 19 | private EventManager asr; 20 | 21 | // SDK 内部核心 事件回调类, 用于开发者写自己的识别回调逻辑 22 | private RecogEventAdapter eventListener; 23 | 24 | // 未release前,只能new一个 25 | private static volatile boolean isInited = false; 26 | 27 | /** 28 | * 初始化 提供 EventManagerFactory需要的Context和RecogEventAdapter 29 | * 30 | * @param context 31 | * @param listener 识别状态和结果回调 32 | */ 33 | public AsrManager(Context context, OnAsrListener listener) { 34 | if (isInited) { 35 | Log.e(TAG, "还未调用release(),请勿新建一个新类"); 36 | throw new RuntimeException("还未调用release(),请勿新建一个新类"); 37 | } 38 | isInited = true; 39 | // SDK集成步骤 初始化asr的EventManager示例,多次得到的类,只能选一个使用 40 | asr = EventManagerFactory.create(context, "asr"); 41 | // SDK集成步骤 设置回调event, 识别引擎会回调这个类告知重要状态和识别结果 42 | asr.registerListener(eventListener = new RecogEventAdapter(listener)); 43 | } 44 | 45 | /** 46 | * @param params 47 | */ 48 | public void start(Map params) { 49 | // SDK集成步骤 拼接识别参数 50 | String json = new JSONObject(params).toString(); 51 | Log.i(TAG + ".Debug", "识别参数(反馈请带上此行日志)" + json); 52 | asr.send(SpeechConstant.ASR_START, json, null, 0, 0); 53 | } 54 | 55 | 56 | /** 57 | * 提前结束录音等待识别结果。 58 | */ 59 | public void stop() { 60 | Log.i(TAG, "停止录音"); 61 | // SDK 集成步骤(可选)停止录音 62 | if (!isInited) { 63 | throw new RuntimeException("release() was called"); 64 | } 65 | asr.send(SpeechConstant.ASR_STOP, "{}", null, 0, 0); 66 | } 67 | 68 | /** 69 | * 取消本次识别,取消后将立即停止不会返回识别结果。 70 | * cancel 与stop的区别是 cancel在stop的基础上,完全停止整个识别流程, 71 | */ 72 | public void cancel() { 73 | Log.i(TAG, "取消识别"); 74 | if (!isInited) { 75 | throw new RuntimeException("release() was called"); 76 | } 77 | // SDK集成步骤 (可选) 取消本次识别 78 | asr.send(SpeechConstant.ASR_CANCEL, "{}", null, 0, 0); 79 | } 80 | 81 | public void release() { 82 | if (asr == null) { 83 | return; 84 | } 85 | cancel(); 86 | // SDK 集成步骤(可选),卸载listener 87 | asr.unregisterListener(eventListener); 88 | asr = null; 89 | isInited = false; 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /android/asr_plugin/src/main/java/com/example/plugin/asr/OnAsrListener.java: -------------------------------------------------------------------------------- 1 | package com.example.plugin.asr; 2 | 3 | /** 4 | * 与SDK中回调参数的对应关系定义在RecogEventAdapter类中 5 | */ 6 | 7 | public interface OnAsrListener { 8 | 9 | /** 10 | * CALLBACK_EVENT_ASR_READY 11 | * ASR_START 输入事件调用后,引擎准备完毕 12 | */ 13 | void onAsrReady(); 14 | 15 | /** 16 | * CALLBACK_EVENT_ASR_BEGIN 17 | * onAsrReady后检查到用户开始说话 18 | */ 19 | void onAsrBegin(); 20 | 21 | /** 22 | * CALLBACK_EVENT_ASR_END 23 | * 检查到用户开始说话停止,或者ASR_STOP 输入事件调用后, 24 | */ 25 | void onAsrEnd(); 26 | 27 | /** 28 | * CALLBACK_EVENT_ASR_PARTIAL resultType=partial_result 29 | * onAsrBegin 后 随着用户的说话,返回的临时结果 30 | * 31 | * @param results 可能返回多个结果,请取第一个结果 32 | * @param recogResult 完整的结果 33 | */ 34 | void onAsrPartialResult(String[] results, RecogResult recogResult); 35 | 36 | /** 37 | * 语音的在线语义结果 38 | * 39 | * CALLBACK_EVENT_ASR_PARTIAL resultType=nlu_result 40 | * @param nluResult 41 | */ 42 | void onAsrOnlineNluResult(String nluResult); 43 | 44 | /** 45 | * CALLBACK_EVENT_ASR_PARTIAL resultType=final_result 46 | * 最终的识别结果 47 | * 48 | * @param results 可能返回多个结果,请取第一个结果 49 | * @param recogResult 完整的结果 50 | */ 51 | void onAsrFinalResult(String[] results, RecogResult recogResult); 52 | 53 | /** 54 | * CALLBACK_EVENT_ASR_FINISH 55 | * @param recogResult 完整的结果 56 | */ 57 | void onAsrFinish(RecogResult recogResult); 58 | 59 | /** 60 | * CALLBACK_EVENT_ASR_FINISH error!=0 61 | * 62 | * @param errorCode 63 | * @param subErrorCode 64 | * @param descMessage 65 | * @param recogResult 66 | */ 67 | void onAsrFinishError(int errorCode, int subErrorCode, String descMessage, RecogResult recogResult); 68 | 69 | /** 70 | * 长语音识别结束 71 | */ 72 | void onAsrLongFinish(); 73 | 74 | /** 75 | * CALLBACK_EVENT_ASR_VOLUME 76 | * 音量回调 77 | * 78 | * @param volumePercent 音量的相对值,百分比,0-100 79 | * @param volume 音量绝对值 80 | */ 81 | void onAsrVolume(int volumePercent, int volume); 82 | 83 | /** 84 | * CALLBACK_EVENT_ASR_AUDIO 85 | * @param data pcm格式,16bits 16000采样率 86 | * 87 | * @param offset 88 | * @param length 89 | */ 90 | void onAsrAudio(byte[] data, int offset, int length); 91 | 92 | /** 93 | * CALLBACK_EVENT_ASR_EXIT 94 | * 引擎完成整个识别,空闲中 95 | */ 96 | void onAsrExit(); 97 | 98 | /** 99 | * CALLBACK_EVENT_ASR_LOADED 100 | * 离线命令词资源加载成功 101 | */ 102 | void onOfflineLoaded(); 103 | 104 | /** 105 | * CALLBACK_EVENT_ASR_UNLOADED 106 | * 离线命令词资源释放成功 107 | */ 108 | void onOfflineUnLoaded(); 109 | } 110 | -------------------------------------------------------------------------------- /android/asr_plugin/src/main/java/com/example/plugin/asr/RecogResult.java: -------------------------------------------------------------------------------- 1 | package com.example.plugin.asr; 2 | 3 | import org.json.JSONArray; 4 | import org.json.JSONException; 5 | import org.json.JSONObject; 6 | 7 | /** 8 | * Created by fujiayi on 2017/6/24. 9 | */ 10 | public class RecogResult { 11 | private static final int ERROR_NONE = 0; 12 | 13 | private String origalJson; 14 | private String[] resultsRecognition; 15 | private String origalResult; 16 | private String sn; // 日志id, 请求有问题请提问带上sn 17 | private String desc; 18 | private String resultType; 19 | private int error = -1; 20 | private int subError = -1; 21 | 22 | public static RecogResult parseJson(String jsonStr) { 23 | RecogResult result = new RecogResult(); 24 | result.setOrigalJson(jsonStr); 25 | try { 26 | JSONObject json = new JSONObject(jsonStr); 27 | int error = json.optInt("error"); 28 | int subError = json.optInt("sub_error"); 29 | result.setError(error); 30 | result.setDesc(json.optString("desc")); 31 | result.setResultType(json.optString("result_type")); 32 | result.setSubError(subError); 33 | if (error == ERROR_NONE) { 34 | result.setOrigalResult(json.getString("origin_result")); 35 | JSONArray arr = json.optJSONArray("results_recognition"); 36 | if (arr != null) { 37 | int size = arr.length(); 38 | String[] recogs = new String[size]; 39 | for (int i = 0; i < size; i++) { 40 | recogs[i] = arr.getString(i); 41 | } 42 | result.setResultsRecognition(recogs); 43 | } 44 | 45 | 46 | } 47 | } catch (JSONException e) { 48 | e.printStackTrace(); 49 | } 50 | 51 | return result; 52 | } 53 | 54 | public boolean hasError() { 55 | return error != ERROR_NONE; 56 | } 57 | 58 | public boolean isFinalResult() { 59 | return "final_result".equals(resultType); 60 | } 61 | 62 | 63 | public boolean isPartialResult() { 64 | return "partial_result".equals(resultType); 65 | } 66 | 67 | public boolean isNluResult() { 68 | return "nlu_result".equals(resultType); 69 | } 70 | 71 | public String getOrigalJson() { 72 | return origalJson; 73 | } 74 | 75 | public void setOrigalJson(String origalJson) { 76 | this.origalJson = origalJson; 77 | } 78 | 79 | public String[] getResultsRecognition() { 80 | return resultsRecognition; 81 | } 82 | 83 | public void setResultsRecognition(String[] resultsRecognition) { 84 | this.resultsRecognition = resultsRecognition; 85 | } 86 | 87 | public String getSn() { 88 | return sn; 89 | } 90 | 91 | public void setSn(String sn) { 92 | this.sn = sn; 93 | } 94 | 95 | public int getError() { 96 | return error; 97 | } 98 | 99 | public void setError(int error) { 100 | this.error = error; 101 | } 102 | 103 | public String getDesc() { 104 | return desc; 105 | } 106 | 107 | public void setDesc(String desc) { 108 | this.desc = desc; 109 | } 110 | 111 | public String getOrigalResult() { 112 | return origalResult; 113 | } 114 | 115 | public void setOrigalResult(String origalResult) { 116 | this.origalResult = origalResult; 117 | } 118 | 119 | public String getResultType() { 120 | return resultType; 121 | } 122 | 123 | public void setResultType(String resultType) { 124 | this.resultType = resultType; 125 | } 126 | 127 | public int getSubError() { 128 | return subError; 129 | } 130 | 131 | public void setSubError(int subError) { 132 | this.subError = subError; 133 | } 134 | } 135 | -------------------------------------------------------------------------------- /android/asr_plugin/src/main/java/com/example/plugin/asr/ResultStateful.java: -------------------------------------------------------------------------------- 1 | package com.example.plugin.asr; 2 | 3 | import android.util.Log; 4 | 5 | import androidx.annotation.Nullable; 6 | import io.flutter.plugin.common.MethodChannel; 7 | 8 | public class ResultStateful implements MethodChannel.Result { 9 | private final static String TAG = "ResultStateful"; 10 | private MethodChannel.Result result; 11 | private boolean called; 12 | 13 | public static ResultStateful of(MethodChannel.Result result) { 14 | return new ResultStateful(result); 15 | } 16 | 17 | private ResultStateful(MethodChannel.Result result) { 18 | this.result = result; 19 | } 20 | 21 | @Override 22 | public void success(@Nullable Object o) { 23 | if (called) { 24 | printError(); 25 | return; 26 | } 27 | called = true; 28 | result.success(o); 29 | } 30 | 31 | @Override 32 | public void error(String s, @Nullable String s1, @Nullable Object o) { 33 | if (called) { 34 | printError(); 35 | return; 36 | } 37 | called = true; 38 | result.error(s, s1, o); 39 | } 40 | 41 | @Override 42 | public void notImplemented() { 43 | if (called) { 44 | printError(); 45 | return; 46 | } 47 | called = true; 48 | result.notImplemented(); 49 | 50 | } 51 | 52 | private void printError() { 53 | Log.e(TAG, "error:result called"); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /android/asr_plugin/src/main/jniLibs/arm64-v8a/libBaiduSpeechSDK.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/android/asr_plugin/src/main/jniLibs/arm64-v8a/libBaiduSpeechSDK.so -------------------------------------------------------------------------------- /android/asr_plugin/src/main/jniLibs/arm64-v8a/libvad.dnn.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/android/asr_plugin/src/main/jniLibs/arm64-v8a/libvad.dnn.so -------------------------------------------------------------------------------- /android/asr_plugin/src/main/jniLibs/x86/libBaiduSpeechSDK.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/android/asr_plugin/src/main/jniLibs/x86/libBaiduSpeechSDK.so -------------------------------------------------------------------------------- /android/asr_plugin/src/main/jniLibs/x86/libvad.dnn.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/android/asr_plugin/src/main/jniLibs/x86/libvad.dnn.so -------------------------------------------------------------------------------- /android/asr_plugin/src/main/jniLibs/x86_64/libBaiduSpeechSDK.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/android/asr_plugin/src/main/jniLibs/x86_64/libBaiduSpeechSDK.so -------------------------------------------------------------------------------- /android/asr_plugin/src/main/jniLibs/x86_64/libvad.dnn.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/android/asr_plugin/src/main/jniLibs/x86_64/libvad.dnn.so -------------------------------------------------------------------------------- /android/asr_plugin/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | asr_plugin 3 | 4 | -------------------------------------------------------------------------------- /android/asr_plugin/src/test/java/com/example/plugin/asr/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.example.plugin.asr; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | google() 4 | jcenter() 5 | } 6 | 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:3.3.0' 9 | } 10 | } 11 | 12 | allprojects { 13 | repositories { 14 | google() 15 | jcenter() 16 | } 17 | } 18 | 19 | rootProject.buildDir = '../build' 20 | subprojects { 21 | project.buildDir = "${rootProject.buildDir}/${project.name}" 22 | } 23 | subprojects { 24 | project.evaluationDependsOn(':app') 25 | } 26 | 27 | task clean(type: Delete) { 28 | delete rootProject.buildDir 29 | } 30 | -------------------------------------------------------------------------------- /android/flutter_ctrip_key_store.jks: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/android/flutter_ctrip_key_store.jks -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.enableR8=true 3 | android.enableJetifier=true 4 | android.useAndroidX=true 5 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip 7 | -------------------------------------------------------------------------------- /android/key.properties: -------------------------------------------------------------------------------- 1 | storePassword=123456 2 | keyPassword=123456 3 | keyAlias=ctrip_key 4 | storeFile=../flutter_ctrip_key_store -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app', ':asr_plugin' 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 | -------------------------------------------------------------------------------- /fonts/PingFang-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/fonts/PingFang-Italic.ttf -------------------------------------------------------------------------------- /fonts/PingFang-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/fonts/PingFang-Regular.ttf -------------------------------------------------------------------------------- /fonts/PingFang_Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/fonts/PingFang_Bold.ttf -------------------------------------------------------------------------------- /images/grid-nav-items-dingzhi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/grid-nav-items-dingzhi.png -------------------------------------------------------------------------------- /images/grid-nav-items-flight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/grid-nav-items-flight.png -------------------------------------------------------------------------------- /images/grid-nav-items-hotel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/grid-nav-items-hotel.png -------------------------------------------------------------------------------- /images/grid-nav-items-jhj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/grid-nav-items-jhj.png -------------------------------------------------------------------------------- /images/grid-nav-items-minsu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/grid-nav-items-minsu.png -------------------------------------------------------------------------------- /images/grid-nav-items-train.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/grid-nav-items-train.png -------------------------------------------------------------------------------- /images/grid-nav-items-travel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/grid-nav-items-travel.png -------------------------------------------------------------------------------- /images/kefu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/kefu.png -------------------------------------------------------------------------------- /images/lvpai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/lvpai.png -------------------------------------------------------------------------------- /images/lvpai_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/lvpai_active.png -------------------------------------------------------------------------------- /images/lvpai_issue_position.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/lvpai_issue_position.png -------------------------------------------------------------------------------- /images/lvpai_issue_sight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/lvpai_issue_sight.png -------------------------------------------------------------------------------- /images/lvpai_search_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/lvpai_search_list.png -------------------------------------------------------------------------------- /images/lvpai_search_tag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/lvpai_search_tag.png -------------------------------------------------------------------------------- /images/lvxiang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/lvxiang.png -------------------------------------------------------------------------------- /images/mude.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/mude.png -------------------------------------------------------------------------------- /images/mude_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/mude_active.png -------------------------------------------------------------------------------- /images/sousuo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/sousuo.png -------------------------------------------------------------------------------- /images/type_channelgroup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/type_channelgroup.png -------------------------------------------------------------------------------- /images/type_channelgs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/type_channelgs.png -------------------------------------------------------------------------------- /images/type_channelplane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/type_channelplane.png -------------------------------------------------------------------------------- /images/type_channeltrain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/type_channeltrain.png -------------------------------------------------------------------------------- /images/type_cruise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/type_cruise.png -------------------------------------------------------------------------------- /images/type_district.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/type_district.png -------------------------------------------------------------------------------- /images/type_food.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/type_food.png -------------------------------------------------------------------------------- /images/type_hotel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/type_hotel.png -------------------------------------------------------------------------------- /images/type_huodong.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/type_huodong.png -------------------------------------------------------------------------------- /images/type_shop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/type_shop.png -------------------------------------------------------------------------------- /images/type_sight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/type_sight.png -------------------------------------------------------------------------------- /images/type_ticket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/type_ticket.png -------------------------------------------------------------------------------- /images/type_travelgroup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/type_travelgroup.png -------------------------------------------------------------------------------- /images/user1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/user1.png -------------------------------------------------------------------------------- /images/wode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/wode.png -------------------------------------------------------------------------------- /images/wode_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/wode_active.png -------------------------------------------------------------------------------- /images/xiaoxi_grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/xiaoxi_grey.png -------------------------------------------------------------------------------- /images/xiaoxi_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/xiaoxi_white.png -------------------------------------------------------------------------------- /images/xiecheng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/xiecheng.png -------------------------------------------------------------------------------- /images/xiecheng_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/xiecheng_active.png -------------------------------------------------------------------------------- /images/yuyin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/images/yuyin.png -------------------------------------------------------------------------------- /ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 8.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /ios/Flutter/Flutter.podspec: -------------------------------------------------------------------------------- 1 | # 2 | # NOTE: This podspec is NOT to be published. It is only used as a local source! 3 | # 4 | 5 | Pod::Spec.new do |s| 6 | s.name = 'Flutter' 7 | s.version = '1.0.0' 8 | s.summary = 'High-performance, high-fidelity mobile apps.' 9 | s.description = <<-DESC 10 | Flutter provides an easy and productive way to build and deploy high-performance mobile apps for Android and iOS. 11 | DESC 12 | s.homepage = 'https://flutter.io' 13 | s.license = { :type => 'MIT' } 14 | s.author = { 'Flutter Dev Team' => 'flutter-dev@googlegroups.com' } 15 | s.source = { :git => 'https://github.com/flutter/engine', :tag => s.version.to_s } 16 | s.ios.deployment_target = '8.0' 17 | s.vendored_frameworks = 'Flutter.framework' 18 | end 19 | -------------------------------------------------------------------------------- /ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /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=/Applications/flutter" 4 | export "FLUTTER_APPLICATION_PATH=/Users/lishaoying/Documents/APP/Flutter/flutter_ctrip" 5 | export "FLUTTER_TARGET=/Users/lishaoying/Documents/APP/Flutter/flutter_ctrip/lib/main.dart" 6 | export "FLUTTER_BUILD_DIR=build" 7 | export "SYMROOT=${SOURCE_ROOT}/../build/ios" 8 | export "FLUTTER_FRAMEWORK_DIR=/Applications/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 | -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/AsrManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+AsrManager.h 3 | // Runner 4 | // 5 | // Created by jph on 2019/3/17. 6 | // Copyright © 2019 The Chromium Authors. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AsrManager:NSObject 12 | typedef void(^AsrCallback)(NSString* message); 13 | +(instancetype)initWith:(AsrCallback)success failure:(AsrCallback)failure; 14 | - (void)start; 15 | - (void)stop; 16 | - (void)cancel; 17 | @end 18 | 19 | 20 | -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/AsrPlugin.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+AsrManager.h 3 | // Runner 4 | // 5 | // Created by jph on 2019/3/17. 6 | // Copyright © 2019 The Chromium Authors. All rights reserved. 7 | // 8 | #import 9 | #import 10 | 11 | @interface AsrPlugin:NSObject 12 | 13 | @end 14 | 15 | 16 | -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/AsrPlugin.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+AsrManager.m 3 | // Runner 4 | // 5 | // Created by jph on 2019/3/17. 6 | // Copyright © 2019 The Chromium Authors. All rights reserved. 7 | // 8 | 9 | #import "AsrPlugin.h" 10 | #import "AsrManager.h" 11 | 12 | @interface AsrPlugin () 13 | @property (strong, nonatomic) AsrManager *asrManager; 14 | @property (strong, nonatomic) FlutterResult result; 15 | @end 16 | @implementation AsrPlugin 17 | + (void)registerWithRegistrar:(NSObject *)registrar { 18 | FlutterMethodChannel *channel = [FlutterMethodChannel methodChannelWithName:@"asr_plugin" binaryMessenger:[registrar messenger] ]; 19 | AsrPlugin* instance =[AsrPlugin new]; 20 | [registrar addMethodCallDelegate:instance channel:channel]; 21 | } 22 | - (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result { 23 | if ([@"start" isEqualToString:call.method]) { 24 | self.result = result; 25 | [[self _asrManager] start]; 26 | }else if ([@"stop" isEqualToString:call.method]) { 27 | [[self _asrManager] stop]; 28 | }else if ([@"cancel" isEqualToString:call.method]) { 29 | [[self _asrManager] cancel]; 30 | } else{ 31 | result(FlutterMethodNotImplemented); 32 | } 33 | } 34 | - (AsrManager*)_asrManager{ 35 | if (!self.asrManager) { 36 | self.asrManager = [AsrManager initWith:^(NSString *message) { 37 | if (self.result) { 38 | self.result(message); 39 | self.result = nil; 40 | } 41 | } failure:^(NSString *message) { 42 | if (self.result) { 43 | self.result([FlutterError errorWithCode:@"ASR fail" message:message details:nil]); 44 | self.result = nil; 45 | } 46 | }]; 47 | } 48 | return self.asrManager; 49 | } 50 | @end 51 | -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientEASRResources/bds_easr_basic_model.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientEASRResources/bds_easr_basic_model.dat -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientEASRResources/bds_easr_dnn_wakeup_model.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientEASRResources/bds_easr_dnn_wakeup_model.dat -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientEASRResources/bds_easr_mfe_cmvn.dat: -------------------------------------------------------------------------------- 1 | vec 26 2 | 1.485246e+01 3 | 1.579741e+01 4 | 1.663629e+01 5 | 1.698390e+01 6 | 1.708107e+01 7 | 1.745045e+01 8 | 1.752832e+01 9 | 1.758490e+01 10 | 1.746364e+01 11 | 1.743286e+01 12 | 1.744198e+01 13 | 1.735617e+01 14 | 1.735499e+01 15 | 1.730315e+01 16 | 1.726894e+01 17 | 1.729055e+01 18 | 1.728198e+01 19 | 1.718504e+01 20 | 1.712417e+01 21 | 1.710584e+01 22 | 1.715915e+01 23 | 1.723995e+01 24 | 1.730050e+01 25 | 1.728485e+01 26 | 1.728487e+01 27 | 1.729697e+01 28 | vec 26 29 | 2.764144e-01 30 | 2.703758e-01 31 | 2.584008e-01 32 | 2.514187e-01 33 | 2.496835e-01 34 | 2.436650e-01 35 | 2.391809e-01 36 | 2.393867e-01 37 | 2.416821e-01 38 | 2.443231e-01 39 | 2.473226e-01 40 | 2.507182e-01 41 | 2.540205e-01 42 | 2.566869e-01 43 | 2.590701e-01 44 | 2.611003e-01 45 | 2.630226e-01 46 | 2.658522e-01 47 | 2.699072e-01 48 | 2.724641e-01 49 | 2.723619e-01 50 | 2.699174e-01 51 | 2.670183e-01 52 | 2.660550e-01 53 | 2.658852e-01 54 | 2.637595e-01 55 | -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientEASRResources/bds_easr_mfe_dnn.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientEASRResources/bds_easr_mfe_dnn.dat -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientEASRResources/bds_easr_wakeup_words.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientEASRResources/bds_easr_wakeup_words.dat -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientEASRResources/bds_license.dat: -------------------------------------------------------------------------------- 1 | a1a0feb5512e354f3c9a4cc46b89ee3a40db91a2e3d407392583129b9e5d53ef0dc99b108e1c0402283092cdfe62e848d1e7e885516582d5a6bab042289983862caf46fad017cac0e52d073c562f7f122f90c8cba0cfe29a7815d6922e131b9f5fce7fb5dc478b1070719a687a176a5e63bb1c674f899cdb99a608b6f7d098f054bafd3c9ebe2edf612bb536f28b9a771db519e0843155b388f69afa91be62472cf1005339868d5e1af244a137707aa588af1ba03d908a69320d449e38329dede1a0770e6a725a04d4190545b120a9902340c1255c73a6ec08ad731c3f601c4e2efbeccd660c53497009522a94566a14da63bdc6fab1e51e25a7fc6f403bbf39 -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkBlue.bundle/bdvrclosed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkBlue.bundle/bdvrclosed@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkBlue.bundle/bdvrclosed_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkBlue.bundle/bdvrclosed_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkBlue.bundle/bdvrdialoganmition_mask@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkBlue.bundle/bdvrdialoganmition_mask@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkBlue.bundle/bdvrdialogbg@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkBlue.bundle/bdvrdialogbg@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkBlue.bundle/bdvrhelp@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkBlue.bundle/bdvrhelp@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkBlue.bundle/bdvrhelp_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkBlue.bundle/bdvrhelp_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkBlue.bundle/bdvrleftbutton@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkBlue.bundle/bdvrleftbutton@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkBlue.bundle/bdvrleftbutton_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkBlue.bundle/bdvrleftbutton_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkBlue.bundle/bdvrrightbtn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkBlue.bundle/bdvrrightbtn@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkBlue.bundle/bdvrrightbtn_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkBlue.bundle/bdvrrightbtn_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkBlue.bundle/bdvrtextmask@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkBlue.bundle/bdvrtextmask@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkBlue.bundle/bdvrwholebtb@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkBlue.bundle/bdvrwholebtb@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkBlue.bundle/bdvrwholebtb_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkBlue.bundle/bdvrwholebtb_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkBlue.bundle/bdvrwholebtn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkBlue.bundle/bdvrwholebtn@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkBlue.bundle/bdvrwholebtn_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkBlue.bundle/bdvrwholebtn_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkBlue.bundle/themeDesc.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkBlue.bundle/themeDesc.plist -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkGreen.bundle/bdvrclosed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkGreen.bundle/bdvrclosed@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkGreen.bundle/bdvrclosed_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkGreen.bundle/bdvrclosed_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkGreen.bundle/bdvrdialoganmition_mask@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkGreen.bundle/bdvrdialoganmition_mask@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkGreen.bundle/bdvrdialogbg@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkGreen.bundle/bdvrdialogbg@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkGreen.bundle/bdvrhelp@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkGreen.bundle/bdvrhelp@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkGreen.bundle/bdvrhelp_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkGreen.bundle/bdvrhelp_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkGreen.bundle/bdvrleftbutton@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkGreen.bundle/bdvrleftbutton@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkGreen.bundle/bdvrleftbutton_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkGreen.bundle/bdvrleftbutton_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkGreen.bundle/bdvrrightbtn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkGreen.bundle/bdvrrightbtn@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkGreen.bundle/bdvrrightbtn_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkGreen.bundle/bdvrrightbtn_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkGreen.bundle/bdvrtextmask@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkGreen.bundle/bdvrtextmask@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkGreen.bundle/bdvrwholebtb@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkGreen.bundle/bdvrwholebtb@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkGreen.bundle/bdvrwholebtb_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkGreen.bundle/bdvrwholebtb_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkGreen.bundle/bdvrwholebtn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkGreen.bundle/bdvrwholebtn@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkGreen.bundle/bdvrwholebtn_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkGreen.bundle/bdvrwholebtn_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkGreen.bundle/themeDesc.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkGreen.bundle/themeDesc.plist -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkOrange.bundle/bdvrclosed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkOrange.bundle/bdvrclosed@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkOrange.bundle/bdvrclosed_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkOrange.bundle/bdvrclosed_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkOrange.bundle/bdvrdialoganmition_mask@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkOrange.bundle/bdvrdialoganmition_mask@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkOrange.bundle/bdvrdialogbg@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkOrange.bundle/bdvrdialogbg@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkOrange.bundle/bdvrhelp@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkOrange.bundle/bdvrhelp@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkOrange.bundle/bdvrhelp_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkOrange.bundle/bdvrhelp_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkOrange.bundle/bdvrleftbutton@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkOrange.bundle/bdvrleftbutton@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkOrange.bundle/bdvrleftbutton_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkOrange.bundle/bdvrleftbutton_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkOrange.bundle/bdvrrightbtn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkOrange.bundle/bdvrrightbtn@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkOrange.bundle/bdvrrightbtn_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkOrange.bundle/bdvrrightbtn_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkOrange.bundle/bdvrtextmask@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkOrange.bundle/bdvrtextmask@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkOrange.bundle/bdvrwholebtb@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkOrange.bundle/bdvrwholebtb@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkOrange.bundle/bdvrwholebtb_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkOrange.bundle/bdvrwholebtb_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkOrange.bundle/bdvrwholebtn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkOrange.bundle/bdvrwholebtn@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkOrange.bundle/bdvrwholebtn_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkOrange.bundle/bdvrwholebtn_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkOrange.bundle/themeDesc.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkOrange.bundle/themeDesc.plist -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkRed.bundle/bdvrclosed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkRed.bundle/bdvrclosed@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkRed.bundle/bdvrclosed_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkRed.bundle/bdvrclosed_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkRed.bundle/bdvrdialoganmition_mask@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkRed.bundle/bdvrdialoganmition_mask@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkRed.bundle/bdvrdialogbg@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkRed.bundle/bdvrdialogbg@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkRed.bundle/bdvrhelp@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkRed.bundle/bdvrhelp@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkRed.bundle/bdvrhelp_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkRed.bundle/bdvrhelp_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkRed.bundle/bdvrleftbutton@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkRed.bundle/bdvrleftbutton@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkRed.bundle/bdvrleftbutton_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkRed.bundle/bdvrleftbutton_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkRed.bundle/bdvrrightbtn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkRed.bundle/bdvrrightbtn@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkRed.bundle/bdvrrightbtn_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkRed.bundle/bdvrrightbtn_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkRed.bundle/bdvrtextmask@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkRed.bundle/bdvrtextmask@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkRed.bundle/bdvrwholebtb@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkRed.bundle/bdvrwholebtb@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkRed.bundle/bdvrwholebtb_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkRed.bundle/bdvrwholebtb_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkRed.bundle/bdvrwholebtn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkRed.bundle/bdvrwholebtn@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkRed.bundle/bdvrwholebtn_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkRed.bundle/bdvrwholebtn_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkRed.bundle/themeDesc.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/darkRed.bundle/themeDesc.plist -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/animation@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/animation@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/animation@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/animation@3x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/application@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/application@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/application@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/application@3x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrclosed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrclosed@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrclosed@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrclosed@3x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrclosed_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrclosed_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrclosed_highlight@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrclosed_highlight@3x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrdialoganmition_mask@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrdialoganmition_mask@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrerror@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrerror@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrerror@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrerror@3x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrhelp@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrhelp@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrhelp_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrhelp_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrleftbutton@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrleftbutton@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrleftbutton_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrleftbutton_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrnoconnection@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrnoconnection@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrnoconnection@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrnoconnection@3x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrretry@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrretry@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrretry_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrretry_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrrightbtn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrrightbtn@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrrightbtn_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrrightbtn_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrtextmask@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrtextmask@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrwholebtb@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrwholebtb@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrwholebtb_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrwholebtb_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrwholebtn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrwholebtn@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrwholebtn_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/bdvrwholebtn_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/calendar@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/calendar@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/calendar@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/calendar@3x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/dividing_line@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/dividing_line@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/dividing_line@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/dividing_line@3x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/fiction@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/fiction@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/fiction@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/fiction@3x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/film@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/film@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/film@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/film@3x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/game@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/game@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/game@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/game@3x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/health@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/health@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/health@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/health@3x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/help@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/help@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/help@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/help@3x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/life_service@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/life_service@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/life_service@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/life_service@3x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/mother_and_baby@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/mother_and_baby@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/mother_and_baby@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/mother_and_baby@3x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/music@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/music@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/music@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/music@3x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/praxis@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/praxis@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/praxis@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/praxis@3x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/stock@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/stock@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/stock@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/stock@3x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/themeDesc.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/themeDesc.plist -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/tv_drama@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/tv_drama@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/tv_drama@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/tv_drama@3x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/whether@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/whether@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/whether@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultFullScreenTheme.bundle/whether@3x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultTheme.bundle/bdvrclosed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultTheme.bundle/bdvrclosed@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultTheme.bundle/bdvrclosed_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultTheme.bundle/bdvrclosed_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultTheme.bundle/bdvrdialoganmition_mask@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultTheme.bundle/bdvrdialoganmition_mask@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultTheme.bundle/bdvrhelp@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultTheme.bundle/bdvrhelp@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultTheme.bundle/bdvrhelp_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultTheme.bundle/bdvrhelp_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultTheme.bundle/bdvrleftbutton@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultTheme.bundle/bdvrleftbutton@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultTheme.bundle/bdvrleftbutton_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultTheme.bundle/bdvrleftbutton_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultTheme.bundle/bdvrrightbtn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultTheme.bundle/bdvrrightbtn@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultTheme.bundle/bdvrrightbtn_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultTheme.bundle/bdvrrightbtn_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultTheme.bundle/bdvrtextmask@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultTheme.bundle/bdvrtextmask@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultTheme.bundle/bdvrwholebtb@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultTheme.bundle/bdvrwholebtb@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultTheme.bundle/bdvrwholebtb_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultTheme.bundle/bdvrwholebtb_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultTheme.bundle/bdvrwholebtn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultTheme.bundle/bdvrwholebtn@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultTheme.bundle/bdvrwholebtn_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultTheme.bundle/bdvrwholebtn_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultTheme.bundle/themeDesc.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/defaultTheme.bundle/themeDesc.plist -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightBlue.bundle/bdvrclosed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightBlue.bundle/bdvrclosed@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightBlue.bundle/bdvrclosed_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightBlue.bundle/bdvrclosed_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightBlue.bundle/bdvrdialoganmition_mask@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightBlue.bundle/bdvrdialoganmition_mask@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightBlue.bundle/bdvrdialogbg@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightBlue.bundle/bdvrdialogbg@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightBlue.bundle/bdvrhelp@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightBlue.bundle/bdvrhelp@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightBlue.bundle/bdvrhelp_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightBlue.bundle/bdvrhelp_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightBlue.bundle/bdvrleftbutton@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightBlue.bundle/bdvrleftbutton@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightBlue.bundle/bdvrleftbutton_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightBlue.bundle/bdvrleftbutton_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightBlue.bundle/bdvrrightbtn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightBlue.bundle/bdvrrightbtn@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightBlue.bundle/bdvrrightbtn_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightBlue.bundle/bdvrrightbtn_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightBlue.bundle/bdvrtextmask@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightBlue.bundle/bdvrtextmask@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightBlue.bundle/bdvrwholebtb@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightBlue.bundle/bdvrwholebtb@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightBlue.bundle/bdvrwholebtb_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightBlue.bundle/bdvrwholebtb_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightBlue.bundle/bdvrwholebtn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightBlue.bundle/bdvrwholebtn@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightBlue.bundle/bdvrwholebtn_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightBlue.bundle/bdvrwholebtn_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightBlue.bundle/themeDesc.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightBlue.bundle/themeDesc.plist -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightGreen.bundle/bdvrclosed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightGreen.bundle/bdvrclosed@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightGreen.bundle/bdvrclosed_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightGreen.bundle/bdvrclosed_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightGreen.bundle/bdvrdialoganmition_mask@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightGreen.bundle/bdvrdialoganmition_mask@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightGreen.bundle/bdvrdialogbg@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightGreen.bundle/bdvrdialogbg@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightGreen.bundle/bdvrhelp@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightGreen.bundle/bdvrhelp@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightGreen.bundle/bdvrhelp_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightGreen.bundle/bdvrhelp_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightGreen.bundle/bdvrleftbutton@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightGreen.bundle/bdvrleftbutton@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightGreen.bundle/bdvrleftbutton_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightGreen.bundle/bdvrleftbutton_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightGreen.bundle/bdvrrightbtn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightGreen.bundle/bdvrrightbtn@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightGreen.bundle/bdvrrightbtn_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightGreen.bundle/bdvrrightbtn_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightGreen.bundle/bdvrtextmask@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightGreen.bundle/bdvrtextmask@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightGreen.bundle/bdvrwholebtb@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightGreen.bundle/bdvrwholebtb@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightGreen.bundle/bdvrwholebtb_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightGreen.bundle/bdvrwholebtb_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightGreen.bundle/bdvrwholebtn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightGreen.bundle/bdvrwholebtn@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightGreen.bundle/bdvrwholebtn_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightGreen.bundle/bdvrwholebtn_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightGreen.bundle/themeDesc.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightGreen.bundle/themeDesc.plist -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightOrange.bundle/bdvrclosed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightOrange.bundle/bdvrclosed@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightOrange.bundle/bdvrclosed_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightOrange.bundle/bdvrclosed_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightOrange.bundle/bdvrdialoganmition_mask@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightOrange.bundle/bdvrdialoganmition_mask@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightOrange.bundle/bdvrdialogbg@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightOrange.bundle/bdvrdialogbg@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightOrange.bundle/bdvrhelp@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightOrange.bundle/bdvrhelp@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightOrange.bundle/bdvrhelp_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightOrange.bundle/bdvrhelp_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightOrange.bundle/bdvrleftbutton@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightOrange.bundle/bdvrleftbutton@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightOrange.bundle/bdvrleftbutton_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightOrange.bundle/bdvrleftbutton_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightOrange.bundle/bdvrrightbtn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightOrange.bundle/bdvrrightbtn@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightOrange.bundle/bdvrrightbtn_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightOrange.bundle/bdvrrightbtn_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightOrange.bundle/bdvrtextmask@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightOrange.bundle/bdvrtextmask@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightOrange.bundle/bdvrwholebtb@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightOrange.bundle/bdvrwholebtb@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightOrange.bundle/bdvrwholebtb_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightOrange.bundle/bdvrwholebtb_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightOrange.bundle/bdvrwholebtn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightOrange.bundle/bdvrwholebtn@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightOrange.bundle/bdvrwholebtn_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightOrange.bundle/bdvrwholebtn_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightOrange.bundle/themeDesc.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightOrange.bundle/themeDesc.plist -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightRed.bundle/bdvrclosed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightRed.bundle/bdvrclosed@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightRed.bundle/bdvrclosed_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightRed.bundle/bdvrclosed_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightRed.bundle/bdvrdialoganmition_mask@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightRed.bundle/bdvrdialoganmition_mask@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightRed.bundle/bdvrdialogbg@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightRed.bundle/bdvrdialogbg@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightRed.bundle/bdvrhelp@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightRed.bundle/bdvrhelp@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightRed.bundle/bdvrhelp_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightRed.bundle/bdvrhelp_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightRed.bundle/bdvrleftbutton@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightRed.bundle/bdvrleftbutton@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightRed.bundle/bdvrleftbutton_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightRed.bundle/bdvrleftbutton_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightRed.bundle/bdvrrightbtn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightRed.bundle/bdvrrightbtn@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightRed.bundle/bdvrrightbtn_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightRed.bundle/bdvrrightbtn_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightRed.bundle/bdvrtextmask@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightRed.bundle/bdvrtextmask@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightRed.bundle/bdvrwholebtb@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightRed.bundle/bdvrwholebtb@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightRed.bundle/bdvrwholebtb_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightRed.bundle/bdvrwholebtb_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightRed.bundle/bdvrwholebtn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightRed.bundle/bdvrwholebtn@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightRed.bundle/bdvrwholebtn_highlight@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightRed.bundle/bdvrwholebtn_highlight@2x.png -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightRed.bundle/themeDesc.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Theme/lightRed.bundle/themeDesc.plist -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Tone/record_cancel.caf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Tone/record_cancel.caf -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Tone/record_end.caf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Tone/record_end.caf -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Tone/record_fail.caf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Tone/record_fail.caf -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Tone/record_start.caf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Tone/record_start.caf -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/BDSClientResources/Tone/record_success.caf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Plugin/ASRPlugin/BDSClientResources/Tone/record_success.caf -------------------------------------------------------------------------------- /ios/Plugin/ASRPlugin/Headers/BDSEventManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // BDSEventManager.h 3 | // BDSpeechClient 4 | // 5 | // Created by baidu on 16/6/6. 6 | // Copyright © 2016年 baidu. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | extern NSString* BDS_ASR_NAME; 12 | extern NSString* BDS_WAKEUP_NAME; 13 | extern NSString* BDS_UPLOADER_NAME; 14 | 15 | @interface BDSEventManager : NSObject 16 | 17 | + (BDSEventManager *)createEventManagerWithName:(NSString *)name; 18 | - (BOOL)setParameter:(id)param forKey:(NSString *)key; 19 | - (void)sendCommand:(NSString *)command; 20 | - (BOOL)setDelegate:(id)delegate; 21 | - (NSString *)libver; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /ios/Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment this line to define a global platform for your project 2 | # platform :ios, '9.0' 3 | 4 | # CocoaPods analytics sends network stats synchronously affecting flutter build latency. 5 | ENV['COCOAPODS_DISABLE_STATS'] = 'true' 6 | 7 | project 'Runner', { 8 | 'Debug' => :debug, 9 | 'Profile' => :release, 10 | 'Release' => :release, 11 | } 12 | 13 | def parse_KV_file(file, separator='=') 14 | file_abs_path = File.expand_path(file) 15 | if !File.exists? file_abs_path 16 | return []; 17 | end 18 | generated_key_values = {} 19 | skip_line_start_symbols = ["#", "/"] 20 | File.foreach(file_abs_path) do |line| 21 | next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ } 22 | plugin = line.split(pattern=separator) 23 | if plugin.length == 2 24 | podname = plugin[0].strip() 25 | path = plugin[1].strip() 26 | podpath = File.expand_path("#{path}", file_abs_path) 27 | generated_key_values[podname] = podpath 28 | else 29 | puts "Invalid plugin specification: #{line}" 30 | end 31 | end 32 | generated_key_values 33 | end 34 | 35 | target 'Runner' do 36 | # Flutter Pod 37 | 38 | copied_flutter_dir = File.join(__dir__, 'Flutter') 39 | copied_framework_path = File.join(copied_flutter_dir, 'Flutter.framework') 40 | copied_podspec_path = File.join(copied_flutter_dir, 'Flutter.podspec') 41 | unless File.exist?(copied_framework_path) && File.exist?(copied_podspec_path) 42 | # Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet. 43 | # That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration. 44 | # CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist. 45 | 46 | generated_xcode_build_settings_path = File.join(copied_flutter_dir, 'Generated.xcconfig') 47 | unless File.exist?(generated_xcode_build_settings_path) 48 | raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first" 49 | end 50 | generated_xcode_build_settings = parse_KV_file(generated_xcode_build_settings_path) 51 | cached_framework_dir = generated_xcode_build_settings['FLUTTER_FRAMEWORK_DIR']; 52 | 53 | unless File.exist?(copied_framework_path) 54 | FileUtils.cp_r(File.join(cached_framework_dir, 'Flutter.framework'), copied_flutter_dir) 55 | end 56 | unless File.exist?(copied_podspec_path) 57 | FileUtils.cp(File.join(cached_framework_dir, 'Flutter.podspec'), copied_flutter_dir) 58 | end 59 | end 60 | 61 | # Keep pod path relative so it can be checked into Podfile.lock. 62 | pod 'Flutter', :path => 'Flutter' 63 | 64 | # Plugin Pods 65 | 66 | # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock 67 | # referring to absolute paths on developers' machines. 68 | system('rm -rf .symlinks') 69 | system('mkdir -p .symlinks/plugins') 70 | plugin_pods = parse_KV_file('../.flutter-plugins') 71 | plugin_pods.each do |name, path| 72 | symlink = File.join('.symlinks', 'plugins', name) 73 | File.symlink(path, symlink) 74 | pod name, :path => File.join(symlink, 'ios') 75 | end 76 | end 77 | 78 | # Prevent Cocoapods from embedding a second Flutter framework and causing an error with the new Xcode build system. 79 | install! 'cocoapods', :disable_input_output_paths => true 80 | 81 | post_install do |installer| 82 | installer.pods_project.targets.each do |target| 83 | target.build_configurations.each do |config| 84 | config.build_settings['ENABLE_BITCODE'] = 'NO' 85 | end 86 | end 87 | end 88 | -------------------------------------------------------------------------------- /ios/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Flutter (1.0.0) 3 | - flutter_webview_plugin (0.0.1): 4 | - Flutter 5 | 6 | DEPENDENCIES: 7 | - Flutter (from `Flutter`) 8 | - flutter_webview_plugin (from `.symlinks/plugins/flutter_webview_plugin/ios`) 9 | 10 | EXTERNAL SOURCES: 11 | Flutter: 12 | :path: Flutter 13 | flutter_webview_plugin: 14 | :path: ".symlinks/plugins/flutter_webview_plugin/ios" 15 | 16 | SPEC CHECKSUMS: 17 | Flutter: 0e3d915762c693b495b44d77113d4970485de6ec 18 | flutter_webview_plugin: ed9e8a6a96baf0c867e90e1bce2673913eeac694 19 | 20 | PODFILE CHECKSUM: 3dbe063e9c90a5d7c9e4e76e70a821b9e2c1d271 21 | 22 | COCOAPODS: 1.9.3 23 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 31 | 32 | 33 | 34 | 40 | 41 | 42 | 43 | 44 | 45 | 56 | 58 | 64 | 65 | 66 | 67 | 68 | 69 | 75 | 77 | 83 | 84 | 85 | 86 | 88 | 89 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildSystemType 6 | Original 7 | PreviewsEnabled 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : FlutterAppDelegate 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.m: -------------------------------------------------------------------------------- 1 | #include "AppDelegate.h" 2 | #include "GeneratedPluginRegistrant.h" 3 | #import "AsrPlugin.h" 4 | 5 | @implementation AppDelegate 6 | 7 | - (BOOL)application:(UIApplication *)application 8 | didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 9 | [GeneratedPluginRegistrant registerWithRegistry:self]; 10 | [AsrPlugin registerWithRegistrar:[self registrarForPlugin:@"AsrPlugain"]]; 11 | // Override point for customization after application launch. 12 | return [super application:application didFinishLaunchingWithOptions:launchOptions]; 13 | } 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "20x20", 5 | "idiom" : "iphone", 6 | "filename" : "Icon-App-20x20@2x.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "20x20", 11 | "idiom" : "iphone", 12 | "filename" : "Icon-App-20x20@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "Icon-App-29x29@1x.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "29x29", 23 | "idiom" : "iphone", 24 | "filename" : "Icon-App-29x29@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "29x29", 29 | "idiom" : "iphone", 30 | "filename" : "Icon-App-29x29@3x.png", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "idiom" : "iphone", 36 | "filename" : "Icon-App-40x40@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "40x40", 41 | "idiom" : "iphone", 42 | "filename" : "Icon-App-40x40@3x.png", 43 | "scale" : "3x" 44 | }, 45 | { 46 | "size" : "60x60", 47 | "idiom" : "iphone", 48 | "filename" : "Icon-App-60x60@2x.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "60x60", 53 | "idiom" : "iphone", 54 | "filename" : "Icon-App-60x60@3x.png", 55 | "scale" : "3x" 56 | }, 57 | { 58 | "size" : "20x20", 59 | "idiom" : "ipad", 60 | "filename" : "Icon-App-20x20@1x.png", 61 | "scale" : "1x" 62 | }, 63 | { 64 | "size" : "20x20", 65 | "idiom" : "ipad", 66 | "filename" : "Icon-App-20x20@2x.png", 67 | "scale" : "2x" 68 | }, 69 | { 70 | "size" : "29x29", 71 | "idiom" : "ipad", 72 | "filename" : "Icon-App-29x29@1x.png", 73 | "scale" : "1x" 74 | }, 75 | { 76 | "size" : "29x29", 77 | "idiom" : "ipad", 78 | "filename" : "Icon-App-29x29@2x.png", 79 | "scale" : "2x" 80 | }, 81 | { 82 | "size" : "40x40", 83 | "idiom" : "ipad", 84 | "filename" : "Icon-App-40x40@1x.png", 85 | "scale" : "1x" 86 | }, 87 | { 88 | "size" : "40x40", 89 | "idiom" : "ipad", 90 | "filename" : "Icon-App-40x40@2x.png", 91 | "scale" : "2x" 92 | }, 93 | { 94 | "size" : "76x76", 95 | "idiom" : "ipad", 96 | "filename" : "Icon-App-76x76@1x.png", 97 | "scale" : "1x" 98 | }, 99 | { 100 | "size" : "76x76", 101 | "idiom" : "ipad", 102 | "filename" : "Icon-App-76x76@2x.png", 103 | "scale" : "2x" 104 | }, 105 | { 106 | "size" : "83.5x83.5", 107 | "idiom" : "ipad", 108 | "filename" : "Icon-App-83.5x83.5@2x.png", 109 | "scale" : "2x" 110 | }, 111 | { 112 | "size" : "1024x1024", 113 | "idiom" : "ios-marketing", 114 | "filename" : "Icon-App-1024x1024@1x.png", 115 | "scale" : "1x" 116 | } 117 | ], 118 | "info" : { 119 | "version" : 1, 120 | "author" : "xcode" 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/persilee/flutter_ctrip/a035a1b35aa585870a5d3798d33df8312e553a9b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /ios/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | flutter_ctrip 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | $(FLUTTER_BUILD_NAME) 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(FLUTTER_BUILD_NUMBER) 23 | LSRequiresIPhoneOS 24 | 25 | NSMicrophoneUsageDescription 26 | 使用语言搜索需要录音权限 27 | UILaunchStoryboardName 28 | LaunchScreen 29 | UIMainStoryboardFile 30 | Main 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | UISupportedInterfaceOrientations~ipad 38 | 39 | UIInterfaceOrientationPortrait 40 | UIInterfaceOrientationPortraitUpsideDown 41 | UIInterfaceOrientationLandscapeLeft 42 | UIInterfaceOrientationLandscapeRight 43 | 44 | UIViewControllerBasedStatusBarAppearance 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /ios/Runner/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char* argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lib/dao/destination_dao.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | import 'dart:convert'; 3 | 4 | import 'package:flutter_ctrip/model/destination_model.dart'; 5 | import 'package:http/http.dart' as http; 6 | 7 | //旅拍搜索接口 8 | 9 | var Params = {"contentType":"json","head":{"cid":"09031043410934928682","ctok":"","cver":"1.0","lang":"01","sid":"8888","syscode":"09","auth":"","extension":[]},"channel":"H5","businessUnit":14,"startCity":2}; 10 | var Url = 'https://sec-m.ctrip.com/restapi/soa2/14422/navigationInfo?_fxpcqlniredt=09031043410934928682'; 11 | 12 | 13 | class DestinationDao { 14 | static Future fetch() async { 15 | final response = await http.post(Url, body: jsonEncode(Params)); 16 | if (response.statusCode == 200) { 17 | Utf8Decoder utf8decoder = Utf8Decoder(); // fix 中文乱码 18 | var result = json.decode(utf8decoder.convert(response.bodyBytes)); 19 | return DestinationModel.fromJson(result); 20 | } else { 21 | throw Exception('Failed to load travel'); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /lib/dao/destination_search_dao.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | import 'dart:convert'; 3 | 4 | import 'package:flutter_ctrip/model/destination_search_model.dart'; 5 | import 'package:flutter_ctrip/model/travel_search_model.dart'; 6 | import 'package:http/http.dart' as http; 7 | 8 | //旅拍搜索接口 9 | 10 | var Params = {"contentType":"json","head":{"cid":"09031043410934928682","ctok":"","cver":"1.0","lang":"01","sid":"8888","syscode":"09","auth":"","extension":[]},"keyword":"h","channel":"H5","sourceVersion":"823000","tab":"1","saleCity":2,"departureCity":2}; 11 | 12 | 13 | 14 | class DestinationSearchDao { 15 | static Future fetch( 16 | String url, String keyword) async { 17 | Params['keyword'] = keyword; 18 | 19 | final response = await http.post(url, body: jsonEncode(Params)); 20 | if (response.statusCode == 200) { 21 | Utf8Decoder utf8decoder = Utf8Decoder(); // fix 中文乱码 22 | var result = json.decode(utf8decoder.convert(response.bodyBytes)); 23 | DestinationSearchModel model = DestinationSearchModel.fromJson(result); 24 | model.keyword = keyword; 25 | return model; 26 | } else { 27 | throw Exception('Failed to load travel'); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /lib/dao/home_dao.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | import 'dart:convert'; 3 | import 'package:flutter_ctrip/model/home_model.dart'; 4 | import 'package:http/http.dart' as http; 5 | 6 | const HOME_URL = 'https://cdn.lishaoy.net/ctrip/homeConfig.json'; 7 | 8 | //首页大接口 9 | class HomeDao { 10 | static Future fetch() async { 11 | final response = await http.get(HOME_URL); 12 | if (response.statusCode == 200) { 13 | Utf8Decoder utf8decoder = Utf8Decoder(); // fix 中文乱码 14 | var result = json.decode(utf8decoder.convert(response.bodyBytes)); 15 | return HomeModel.fromJson(result); 16 | } else { 17 | throw Exception('Failed to load home_page.json'); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /lib/dao/search_dao.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | import 'dart:convert'; 3 | import 'package:flutter_ctrip/model/seach_model.dart'; 4 | import 'package:http/http.dart' as http; 5 | 6 | //搜索接口 7 | class SearchDao { 8 | static Future fetch(String url, String text) async { 9 | final response = await http.get(url); 10 | if (response.statusCode == 200) { 11 | Utf8Decoder utf8decoder = Utf8Decoder(); // fix 中文乱码 12 | var result = json.decode(utf8decoder.convert(response.bodyBytes)); 13 | SearchModel model = SearchModel.fromJson(result); 14 | model.keyword = text; 15 | return model; 16 | } else { 17 | throw Exception('Failed to load home_page.json'); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /lib/dao/trave_hot_keyword_dao.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | import 'dart:convert'; 3 | 4 | import 'package:flutter_ctrip/model/travel_hot_keyword_model.dart'; 5 | import 'package:flutter_ctrip/model/travel_search_hot_model.dart'; 6 | import 'package:http/http.dart' as http; 7 | 8 | //旅拍搜索接口 9 | 10 | var Params = {"head":{"cid":"09031043410934928682","ctok":"","cver":"1.0","lang":"01","sid":"8888","syscode":"09","auth":null,"extension":[{"name":"tecode","value":"h5"},{"name":"protocal","value":"https"}]},"contentType":"json"}; 11 | var Url = 'https://m.ctrip.com/restapi/soa2/16189/json/searchRecommend?_fxpcqlniredt=09031043410934928682&__gw_appid=99999999&__gw_ver=1.0&__gw_from=10650016495&__gw_platform=H5'; 12 | 13 | 14 | class TravelHotKeywordDao { 15 | static Future fetch() async { 16 | final response = await http.post(Url, body: jsonEncode(Params)); 17 | if (response.statusCode == 200) { 18 | Utf8Decoder utf8decoder = Utf8Decoder(); // fix 中文乱码 19 | var result = json.decode(utf8decoder.convert(response.bodyBytes)); 20 | return TravelHotKeywordModel.fromJson(result); 21 | } else { 22 | throw Exception('Failed to load travel'); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/dao/trave_search_dao.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | import 'dart:convert'; 3 | 4 | import 'package:flutter_ctrip/model/travel_search_model.dart'; 5 | import 'package:http/http.dart' as http; 6 | 7 | //旅拍搜索接口 8 | 9 | var Params = { 10 | "keyword": "五一", 11 | "locationDistrictId": 0, 12 | "lat": -180, 13 | "lon": -180, 14 | "head": { 15 | "cid": "09031043410934928682", 16 | "ctok": "", 17 | "cver": "1.0", 18 | "lang": "01", 19 | "sid": "8888", 20 | "syscode": "09", 21 | "auth": null, 22 | "extension": [ 23 | { 24 | "name": "tecode", 25 | "value": "h5" 26 | }, 27 | { 28 | "name": "protocal", 29 | "value": "https" 30 | } 31 | ] 32 | }, 33 | "contentType": "json" 34 | }; 35 | 36 | 37 | 38 | class TravelSearchDao { 39 | static Future fetch( 40 | String url, String keyword) async { 41 | Params['keyword'] = keyword; 42 | final response = await http.post(url, body: jsonEncode(Params)); 43 | if (response.statusCode == 200) { 44 | Utf8Decoder utf8decoder = Utf8Decoder(); // fix 中文乱码 45 | var result = json.decode(utf8decoder.convert(response.bodyBytes)); 46 | TravelSearchModel model = TravelSearchModel.fromJson(result); 47 | model.keyword = keyword; 48 | return model; 49 | } else { 50 | throw Exception('Failed to load travel'); 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /lib/dao/trave_search_hot_dao.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | import 'dart:convert'; 3 | 4 | import 'package:flutter_ctrip/model/travel_search_hot_model.dart'; 5 | import 'package:http/http.dart' as http; 6 | 7 | //旅拍搜索接口 8 | 9 | var Params = {"pageCode":"appSuggest","locationDistrictId":0,"lat":-180,"lon":-180,"head":{"cid":"09031043410934928682","ctok":"","cver":"1.0","lang":"01","sid":"8888","syscode":"09","auth":null,"extension":[{"name":"tecode","value":"h5"},{"name":"protocal","value":"https"}]},"contentType":"json"}; 10 | var Url = 'https://m.ctrip.com/restapi/soa2/16189/json/moduleListSearch?_fxpcqlniredt=09031043410934928682&__gw_appid=99999999&__gw_ver=1.0&__gw_from=10650016495&__gw_platform=H5'; 11 | 12 | 13 | class TravelSearchHotDao { 14 | static Future fetch() async { 15 | final response = await http.post(Url, body: jsonEncode(Params)); 16 | if (response.statusCode == 200) { 17 | Utf8Decoder utf8decoder = Utf8Decoder(); // fix 中文乱码 18 | var result = json.decode(utf8decoder.convert(response.bodyBytes)); 19 | return TravelSearchHotModel.fromJson(result); 20 | } else { 21 | throw Exception('Failed to load travel'); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /lib/dao/travel_dao.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | import 'dart:convert'; 3 | 4 | import 'package:flutter_ctrip/model/travel_model.dart'; 5 | import 'package:http/http.dart' as http; 6 | 7 | ///旅拍页接口 8 | 9 | var Params = { 10 | "districtId": -1, 11 | "groupChannelCode": "RX-OMF", 12 | "type": null, 13 | "lat": -180, 14 | "lon": -180, 15 | "locatedDistrictId": 0, 16 | "pagePara": { 17 | "pageIndex": 1, 18 | "pageSize": 10, 19 | "sortType": 9, 20 | "sortDirection": 0 21 | }, 22 | "imageCutType": 1, 23 | "head": {'cid': "09031014111431397988"}, 24 | "contentType": "json" 25 | }; 26 | 27 | 28 | 29 | class TravelDao { 30 | static Future fetch( 31 | String url,Map params, String groupChannelCode, int pageIndex, int pageSize) async { 32 | Map paramsMap = params['pagePara']; 33 | paramsMap['pageIndex'] = pageIndex; 34 | paramsMap['pageSize'] = pageSize; 35 | params['groupChannelCode'] = groupChannelCode; 36 | final response = await http.post(url, body: jsonEncode(params)); 37 | if (response.statusCode == 200) { 38 | Utf8Decoder utf8decoder = Utf8Decoder(); // fix 中文乱码 39 | var result = json.decode(utf8decoder.convert(response.bodyBytes)); 40 | return TravelItemModel.fromJson(result); 41 | } else { 42 | throw Exception('Failed to load travel'); 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /lib/dao/travel_params_dao.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | import 'dart:convert'; 3 | import 'package:flutter_ctrip/model/travel_params_model.dart'; 4 | import 'package:http/http.dart' as http; 5 | 6 | //旅拍类别接口 7 | class TravelParamsDao { 8 | static Future fetch() async { 9 | final response = await http 10 | .get('http://www.devio.org/io/flutter_app/json/travel_page.json'); 11 | if (response.statusCode == 200) { 12 | Utf8Decoder utf8decoder = Utf8Decoder(); // fix 中文乱码 13 | var result = json.decode(utf8decoder.convert(response.bodyBytes)); 14 | print(result); 15 | return TravelParamsModel.fromJson(result); 16 | } else { 17 | throw Exception('Failed to load travel_page.json'); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /lib/dao/travel_tab_dao.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | import 'dart:convert'; 3 | 4 | import 'package:flutter_ctrip/model/travel_tab_model.dart'; 5 | import 'package:http/http.dart' as http; 6 | 7 | //旅拍类别接口 8 | class TravelTabDao { 9 | static Future fetch() async { 10 | final response = await http 11 | .get('https://m.ctrip.com/restapi/soa2/15612/json/getTripShootHomePage'); 12 | if (response.statusCode == 200) { 13 | Utf8Decoder utf8decoder = Utf8Decoder(); // fix 中文乱码 14 | var result = json.decode(utf8decoder.convert(response.bodyBytes)); 15 | return TravelTabModel.fromJson(result); 16 | } else { 17 | throw Exception('Failed to load travel_page.json'); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter/services.dart'; 3 | import 'package:flutter_color_plugin/flutter_color_plugin.dart'; 4 | 5 | import 'navigator/tab_navigater.dart'; 6 | 7 | void main() => runApp(MyApp()); 8 | 9 | class MyApp extends StatelessWidget { 10 | @override 11 | Widget build(BuildContext context) { 12 | TextStyle textStyle = TextStyle(fontSize: 20); 13 | SystemUiOverlayStyle style = SystemUiOverlayStyle( 14 | statusBarColor: Colors.transparent, 15 | ///这是设置状态栏的图标和字体的颜色 16 | ///Brightness.light 一般都是显示为白色 17 | ///Brightness.dark 一般都是显示为黑色 18 | statusBarIconBrightness: Brightness.dark 19 | ); 20 | SystemChrome.setSystemUIOverlayStyle(style); 21 | 22 | return MaterialApp( 23 | debugShowCheckedModeBanner: false, 24 | title: 'FCtrip', 25 | theme: ThemeData( 26 | primarySwatch: Colors.blue, 27 | fontFamily: 'PingFang', 28 | ), 29 | home: TabNavigator(), 30 | ); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /lib/model/common_model.dart: -------------------------------------------------------------------------------- 1 | class CommonModel { 2 | final String icon; 3 | final String title; 4 | final String url; 5 | final String statusBarColor; 6 | final bool hideAppBar; 7 | 8 | CommonModel( 9 | {this.icon, this.title, this.url, this.statusBarColor, this.hideAppBar}); 10 | 11 | factory CommonModel.fromJson(Map json) { 12 | return CommonModel( 13 | icon: json['icon'], 14 | title: json['title'], 15 | url: json['url'], 16 | statusBarColor: json['statusBarColor'], 17 | hideAppBar: json['hideAppBar'] 18 | ); 19 | } 20 | 21 | Map toJson() { 22 | final Map data = new Map(); 23 | data['icon'] = this.icon; 24 | data['title'] = this.title; 25 | data['url'] = this.title; 26 | data['statusBarColor'] = this.title; 27 | data['hideAppBar'] = this.title; 28 | return data; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /lib/model/config_model.dart: -------------------------------------------------------------------------------- 1 | class ConfigModel { 2 | final String searchUrl; 3 | 4 | ConfigModel({this.searchUrl}); 5 | 6 | factory ConfigModel.fromJson(Mapjson){ 7 | return ConfigModel(searchUrl: json['searchUrl']); 8 | } 9 | 10 | Map toJson() { 11 | return {searchUrl: searchUrl}; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lib/model/destination_model.dart: -------------------------------------------------------------------------------- 1 | class DestinationModel { 2 | List navigationPopList; 3 | 4 | DestinationModel({this.navigationPopList}); 5 | 6 | DestinationModel.fromJson(Map json) { 7 | if (json['navigationPopList'] != null) { 8 | navigationPopList = new List(); 9 | json['navigationPopList'].forEach((v) { 10 | navigationPopList.add(new NavigationPopList.fromJson(v)); 11 | }); 12 | } 13 | } 14 | 15 | Map toJson() { 16 | final Map data = new Map(); 17 | if (this.navigationPopList != null) { 18 | data['navigationPopList'] = 19 | this.navigationPopList.map((v) => v.toJson()).toList(); 20 | } 21 | return data; 22 | } 23 | } 24 | 25 | class NavigationPopList { 26 | int category; 27 | String categoryName; 28 | List destAreaList; 29 | 30 | NavigationPopList({this.category, this.categoryName, this.destAreaList}); 31 | 32 | NavigationPopList.fromJson(Map json) { 33 | category = json['category']; 34 | categoryName = json['categoryName']; 35 | if (json['destAreaList'] != null) { 36 | destAreaList = new List(); 37 | json['destAreaList'].forEach((v) { 38 | destAreaList.add(new DestAreaList.fromJson(v)); 39 | }); 40 | } 41 | } 42 | 43 | Map toJson() { 44 | final Map data = new Map(); 45 | data['category'] = this.category; 46 | data['categoryName'] = this.categoryName; 47 | if (this.destAreaList != null) { 48 | data['destAreaList'] = this.destAreaList.map((v) => v.toJson()).toList(); 49 | } 50 | return data; 51 | } 52 | } 53 | 54 | class DestAreaList { 55 | int id; 56 | String text; 57 | List child; 58 | 59 | DestAreaList({this.id, this.text, this.child}); 60 | 61 | DestAreaList.fromJson(Map json) { 62 | id = json['id']; 63 | text = json['text']; 64 | if (json['child'] != null) { 65 | child = new List(); 66 | json['child'].forEach((v) { 67 | child.add(new Child.fromJson(v)); 68 | }); 69 | } 70 | } 71 | 72 | Map toJson() { 73 | final Map data = new Map(); 74 | data['id'] = this.id; 75 | data['text'] = this.text; 76 | if (this.child != null) { 77 | data['child'] = this.child.map((v) => v.toJson()).toList(); 78 | } 79 | return data; 80 | } 81 | } 82 | 83 | class Child { 84 | int id; 85 | String text; 86 | String picUrl; 87 | String kwd; 88 | List tagList; 89 | String poiType; 90 | 91 | Child( 92 | {this.id, this.text, this.picUrl, this.kwd, this.tagList, this.poiType}); 93 | 94 | Child.fromJson(Map json) { 95 | id = json['id']; 96 | text = json['text']; 97 | picUrl = json['picUrl']; 98 | kwd = json['kwd']; 99 | if (json['tagList'] != null) { 100 | tagList = new List(); 101 | json['tagList'].forEach((v) { 102 | tagList.add(new TagList.fromJson(v)); 103 | }); 104 | } 105 | poiType = json['poiType']; 106 | } 107 | 108 | Map toJson() { 109 | final Map data = new Map(); 110 | data['id'] = this.id; 111 | data['text'] = this.text; 112 | data['picUrl'] = this.picUrl; 113 | data['kwd'] = this.kwd; 114 | if (this.tagList != null) { 115 | data['tagList'] = this.tagList.map((v) => v.toJson()).toList(); 116 | } 117 | data['poiType'] = this.poiType; 118 | return data; 119 | } 120 | } 121 | 122 | class TagList { 123 | int type; 124 | String tagName; 125 | 126 | TagList({this.type, this.tagName}); 127 | 128 | TagList.fromJson(Map json) { 129 | type = json['type']; 130 | tagName = json['tagName']; 131 | } 132 | 133 | Map toJson() { 134 | final Map data = new Map(); 135 | data['type'] = this.type; 136 | data['tagName'] = this.tagName; 137 | return data; 138 | } 139 | } 140 | -------------------------------------------------------------------------------- /lib/model/grid_nav_model.dart: -------------------------------------------------------------------------------- 1 | 2 | 3 | import 'package:flutter_ctrip/model/common_model.dart'; 4 | 5 | //首页网格卡片模型 6 | class GridNavModel { 7 | final GridNavItem hotel; 8 | final GridNavItem flight; 9 | final GridNavItem travel; 10 | 11 | GridNavModel({this.hotel, this.flight, this.travel}); 12 | 13 | factory GridNavModel.fromJson(Map json) { 14 | return json != null 15 | ? GridNavModel( 16 | hotel: GridNavItem.fromJson(json['hotel']), 17 | flight: GridNavItem.fromJson(json['flight']), 18 | travel: GridNavItem.fromJson(json['travel']), 19 | ) 20 | : null; 21 | } 22 | } 23 | 24 | class GridNavItem { 25 | final String startColor; 26 | final String endColor; 27 | final CommonModel mainItem; 28 | final CommonModel item1; 29 | final CommonModel item2; 30 | final CommonModel item3; 31 | final CommonModel item4; 32 | 33 | GridNavItem( 34 | {this.startColor, 35 | this.endColor, 36 | this.mainItem, 37 | this.item1, 38 | this.item2, 39 | this.item3, 40 | this.item4}); 41 | 42 | factory GridNavItem.fromJson(Map json) { 43 | return GridNavItem( 44 | startColor: json['startColor'], 45 | endColor: json['endColor'], 46 | mainItem: CommonModel.fromJson(json['mainItem']), 47 | item1: CommonModel.fromJson(json['item1']), 48 | item2: CommonModel.fromJson(json['item2']), 49 | item3: CommonModel.fromJson(json['item3']), 50 | item4: CommonModel.fromJson(json['item4']), 51 | ); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /lib/model/home_model.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter_ctrip/model/common_model.dart'; 2 | import 'package:flutter_ctrip/model/config_model.dart'; 3 | import 'package:flutter_ctrip/model/grid_nav_model.dart'; 4 | import 'package:flutter_ctrip/model/sales_box_model.dart'; 5 | 6 | class HomeModel { 7 | final ConfigModel config; 8 | final List bannerList; 9 | final List localNavList; 10 | final List subNavList; 11 | final GridNavModel gridNav; 12 | final SalesBoxModel salesBox; 13 | 14 | HomeModel( 15 | {this.config, 16 | this.bannerList, 17 | this.localNavList, 18 | this.subNavList, 19 | this.gridNav, 20 | this.salesBox}); 21 | 22 | factory HomeModel.fromJson(Map json) { 23 | var localNavListJson = json['localNavList'] as List; 24 | List localNavList = 25 | localNavListJson.map((i) => CommonModel.fromJson(i)).toList(); 26 | 27 | var bannerListJson = json['bannerList'] as List; 28 | List bannerList = 29 | bannerListJson.map((i) => CommonModel.fromJson(i)).toList(); 30 | 31 | var subNavListJson = json['subNavList'] as List; 32 | List subNavList = 33 | subNavListJson.map((i) => CommonModel.fromJson(i)).toList(); 34 | 35 | return HomeModel( 36 | localNavList: localNavList, 37 | bannerList: bannerList, 38 | subNavList: subNavList, 39 | config: ConfigModel.fromJson(json['config']), 40 | gridNav: GridNavModel.fromJson(json['gridNav']), 41 | salesBox: SalesBoxModel.fromJson(json['salesBox']), 42 | ); 43 | } 44 | 45 | Map toJson(){ 46 | final Map data = new Map(); 47 | if(this.config != null){ 48 | data['config'] = this.config.toJson(); 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /lib/model/sales_box_model.dart: -------------------------------------------------------------------------------- 1 | 2 | import 'package:flutter_ctrip/model/common_model.dart'; 3 | 4 | //活动入口模型 5 | class SalesBoxModel { 6 | final String icon; 7 | final String moreUrl; 8 | final CommonModel bigCard1; 9 | final CommonModel bigCard2; 10 | final CommonModel smallCard1; 11 | final CommonModel smallCard2; 12 | final CommonModel smallCard3; 13 | final CommonModel smallCard4; 14 | 15 | SalesBoxModel( 16 | {this.icon, 17 | this.moreUrl, 18 | this.bigCard1, 19 | this.bigCard2, 20 | this.smallCard1, 21 | this.smallCard2, 22 | this.smallCard3, 23 | this.smallCard4}); 24 | 25 | factory SalesBoxModel.fromJson(Map json) { 26 | return SalesBoxModel( 27 | icon: json['icon'], 28 | moreUrl: json['moreUrl'], 29 | bigCard1: CommonModel.fromJson(json['bigCard1']), 30 | bigCard2: CommonModel.fromJson(json['bigCard2']), 31 | smallCard1: CommonModel.fromJson(json['smallCard1']), 32 | smallCard2: CommonModel.fromJson(json['smallCard2']), 33 | smallCard3: CommonModel.fromJson(json['smallCard3']), 34 | smallCard4: CommonModel.fromJson(json['smallCard4']), 35 | ); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /lib/model/seach_model.dart: -------------------------------------------------------------------------------- 1 | class SearchModel { 2 | String keyword; 3 | final List data; 4 | 5 | SearchModel({this.data}); 6 | 7 | factory SearchModel.fromJson(Map json) { 8 | var dataJson = json['data'] as List; 9 | List data = 10 | dataJson.map((i) => SearchItem.fromJson(i)).toList(); 11 | return SearchModel(data: data); 12 | } 13 | } 14 | 15 | class SearchItem { 16 | final String word; //xx酒店 17 | final String type; //hotel 18 | final String price; //实时计价 19 | final String star; //豪华型 20 | final String zonename; //虹桥 21 | final String districtname; //上海 22 | final String url; 23 | 24 | SearchItem( 25 | {this.word, 26 | this.type, 27 | this.price, 28 | this.star, 29 | this.zonename, 30 | this.districtname, 31 | this.url}); 32 | 33 | factory SearchItem.fromJson(Map json) { 34 | return SearchItem( 35 | word: json['word'], 36 | type: json['type'], 37 | price: json['price'], 38 | star: json['star'], 39 | zonename: json['zonename'], 40 | districtname: json['districtname'], 41 | url: json['url'], 42 | ); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /lib/model/travel_hot_keyword_model.dart: -------------------------------------------------------------------------------- 1 | class TravelHotKeywordModel { 2 | 3 | List hotKeyword; 4 | 5 | TravelHotKeywordModel({this.hotKeyword}); 6 | 7 | TravelHotKeywordModel.fromJson(Map json) { 8 | if (json['result'] != null) { 9 | hotKeyword = new List(); 10 | json['result'].forEach((v) { 11 | hotKeyword.add(new HotKeyword.fromJson(v)); 12 | }); 13 | } 14 | } 15 | 16 | Map toJson() { 17 | final Map data = new Map(); 18 | if (this.hotKeyword != null) { 19 | data['result'] = this.hotKeyword.map((v) => v.toJson()).toList(); 20 | } 21 | return data; 22 | } 23 | } 24 | 25 | class HotKeyword { 26 | String prefix; 27 | String content; 28 | String h5Url; 29 | String appUrl; 30 | String wxUrl; 31 | String mainWxUrl; 32 | 33 | HotKeyword( 34 | {this.prefix, 35 | this.content, 36 | this.h5Url, 37 | this.appUrl, 38 | this.wxUrl, 39 | this.mainWxUrl}); 40 | 41 | HotKeyword.fromJson(Map json) { 42 | prefix = json['prefix']; 43 | content = json['content']; 44 | h5Url = json['h5Url']; 45 | appUrl = json['appUrl']; 46 | wxUrl = json['wxUrl']; 47 | mainWxUrl = json['mainWxUrl']; 48 | } 49 | 50 | Map toJson() { 51 | final Map data = new Map(); 52 | data['prefix'] = this.prefix; 53 | data['content'] = this.content; 54 | data['h5Url'] = this.h5Url; 55 | data['appUrl'] = this.appUrl; 56 | data['wxUrl'] = this.wxUrl; 57 | data['mainWxUrl'] = this.mainWxUrl; 58 | return data; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /lib/model/travel_params_model.dart: -------------------------------------------------------------------------------- 1 | class TravelParamsModel { 2 | Map params; 3 | String url; 4 | List tabs; 5 | 6 | TravelParamsModel({this.url, this.tabs}); 7 | 8 | TravelParamsModel.fromJson(Map json) { 9 | url = json['url']; 10 | params = json['params']; 11 | if (json['tabs'] != null) { 12 | tabs = new List(); 13 | json['tabs'].forEach((v) { 14 | tabs.add(new TravelTab.fromJson(v)); 15 | }); 16 | } 17 | } 18 | 19 | Map toJson() { 20 | final Map data = new Map(); 21 | data['url'] = this.url; 22 | if (this.tabs != null) { 23 | data['tabs'] = this.tabs.map((v) => v.toJson()).toList(); 24 | } 25 | return data; 26 | } 27 | } 28 | 29 | class TravelTab { 30 | String labelName; 31 | String groupChannelCode; 32 | 33 | TravelTab({this.labelName, this.groupChannelCode}); 34 | 35 | TravelTab.fromJson(Map json) { 36 | labelName = json['labelName']; 37 | groupChannelCode = json['groupChannelCode']; 38 | } 39 | 40 | Map toJson() { 41 | final Map data = new Map(); 42 | data['labelName'] = this.labelName; 43 | data['groupChannelCode'] = this.groupChannelCode; 44 | return data; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /lib/model/travel_search_hot_model.dart: -------------------------------------------------------------------------------- 1 | class TravelSearchHotModel { 2 | List hotResult; 3 | 4 | TravelSearchHotModel({this.hotResult}); 5 | 6 | TravelSearchHotModel.fromJson(Map json) { 7 | 8 | if (json['result'] != null) { 9 | hotResult = new List(); 10 | json['result'].forEach((v) { 11 | hotResult.add(new HotResult.fromJson(v)); 12 | }); 13 | } 14 | } 15 | 16 | Map toJson() { 17 | final Map data = new Map(); 18 | if (this.hotResult != null) { 19 | data['result'] = this.hotResult.map((v) => v.toJson()).toList(); 20 | } 21 | return data; 22 | } 23 | } 24 | 25 | class HotResult { 26 | String name; 27 | String title; 28 | int template; 29 | List resourceItems; 30 | 31 | HotResult({this.name, this.title, this.template, this.resourceItems}); 32 | 33 | HotResult.fromJson(Map json) { 34 | name = json['name']; 35 | title = json['title']; 36 | template = json['template']; 37 | if (json['resourceItems'] != null) { 38 | resourceItems = new List(); 39 | json['resourceItems'].forEach((v) { 40 | resourceItems.add(new ResourceItems.fromJson(v)); 41 | }); 42 | } 43 | } 44 | 45 | Map toJson() { 46 | final Map data = new Map(); 47 | data['name'] = this.name; 48 | data['title'] = this.title; 49 | data['template'] = this.template; 50 | if (this.resourceItems != null) { 51 | data['resourceItems'] = 52 | this.resourceItems.map((v) => v.toJson()).toList(); 53 | } 54 | return data; 55 | } 56 | } 57 | 58 | class ResourceItems { 59 | int id; 60 | String title; 61 | String iconUrl; 62 | String resourceType; 63 | String h5Url; 64 | String appUrl; 65 | String wxUrl; 66 | String mainWxUrl; 67 | 68 | ResourceItems( 69 | {this.id, 70 | this.title, 71 | this.iconUrl, 72 | this.resourceType, 73 | this.h5Url, 74 | this.appUrl, 75 | this.wxUrl, 76 | this.mainWxUrl}); 77 | 78 | ResourceItems.fromJson(Map json) { 79 | id = json['id']; 80 | title = json['title']; 81 | iconUrl = json['iconUrl']; 82 | resourceType = json['resourceType']; 83 | h5Url = json['h5Url']; 84 | appUrl = json['appUrl']; 85 | wxUrl = json['wxUrl']; 86 | mainWxUrl = json['mainWxUrl']; 87 | } 88 | 89 | Map toJson() { 90 | final Map data = new Map(); 91 | data['id'] = this.id; 92 | data['title'] = this.title; 93 | data['iconUrl'] = this.iconUrl; 94 | data['resourceType'] = this.resourceType; 95 | data['h5Url'] = this.h5Url; 96 | data['appUrl'] = this.appUrl; 97 | data['wxUrl'] = this.wxUrl; 98 | data['mainWxUrl'] = this.mainWxUrl; 99 | return data; 100 | } 101 | } 102 | -------------------------------------------------------------------------------- /lib/navigator/tab_navigater.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_ctrip/pages/destination_page.dart'; 3 | import 'package:flutter_ctrip/pages/home_page.dart'; 4 | import 'package:flutter_ctrip/pages/my_page.dart'; 5 | import 'package:flutter_ctrip/pages/travel_page.dart'; 6 | 7 | class TabNavigator extends StatefulWidget { 8 | @override 9 | _TabNavigatorState createState() => _TabNavigatorState(); 10 | } 11 | 12 | class _TabNavigatorState extends State 13 | with AutomaticKeepAliveClientMixin, SingleTickerProviderStateMixin { 14 | final _defaultColor = Color(0xff8a8a8a); 15 | final _activeColor = Color(0xff50b4ed); 16 | int _currentIndex = 0; 17 | PageController _controller; 18 | 19 | @override 20 | void initState() { 21 | super.initState(); 22 | _controller = PageController( 23 | initialPage: 0, 24 | ); 25 | } 26 | 27 | @override 28 | void dispose() { 29 | super.dispose(); 30 | _controller.dispose(); 31 | } 32 | 33 | @override 34 | // ignore: must_call_super 35 | Widget build(BuildContext context) { 36 | return Scaffold( 37 | body: PageView( 38 | controller: _controller, 39 | children: [ 40 | HomePage(), 41 | DestinationPage(), 42 | TravelPage(), 43 | MyPage(), 44 | ], 45 | physics: NeverScrollableScrollPhysics(), 46 | ), 47 | bottomNavigationBar: BottomNavigationBar( 48 | currentIndex: _currentIndex, 49 | onTap: (index) { 50 | _controller.animateToPage( 51 | index, 52 | curve: Curves.easeIn, duration: Duration(milliseconds: 260) 53 | ); 54 | setState(() { 55 | _currentIndex = index; 56 | }); 57 | }, 58 | type: BottomNavigationBarType.fixed, 59 | selectedFontSize: 12, 60 | items: [ 61 | BottomNavigationBarItem( 62 | icon: Image.asset( 63 | 'images/xiecheng.png', 64 | width: 22, 65 | height: 22, 66 | ), 67 | activeIcon: Image.asset( 68 | 'images/xiecheng_active.png', 69 | width: 22, 70 | height: 22, 71 | ), 72 | title: Text( 73 | '首页', 74 | style: TextStyle( 75 | color: _currentIndex != 0 ? _defaultColor : _activeColor, 76 | ), 77 | ), 78 | ), 79 | BottomNavigationBarItem( 80 | icon: Image.asset( 81 | 'images/mude.png', 82 | width: 24, 83 | height: 24, 84 | ), 85 | activeIcon: Image.asset( 86 | 'images/mude_active.png', 87 | width: 24, 88 | height: 24, 89 | ), 90 | title: Text( 91 | '目的地', 92 | style: TextStyle( 93 | color: _currentIndex != 1 ? _defaultColor : _activeColor, 94 | ), 95 | ), 96 | ), 97 | BottomNavigationBarItem( 98 | icon: Image.asset( 99 | 'images/lvpai.png', 100 | width: 23, 101 | height: 23, 102 | ), 103 | activeIcon: Image.asset( 104 | 'images/lvpai_active.png', 105 | width: 23, 106 | height: 23, 107 | ), 108 | title: Text( 109 | '旅拍', 110 | style: TextStyle( 111 | color: _currentIndex != 2 ? _defaultColor : _activeColor, 112 | ), 113 | ), 114 | ), 115 | BottomNavigationBarItem( 116 | icon: Image.asset( 117 | 'images/wode.png', 118 | width: 23, 119 | height: 23, 120 | ), 121 | activeIcon: Image.asset( 122 | 'images/wode_active.png', 123 | width: 23, 124 | height: 23, 125 | ), 126 | title: Text( 127 | '我的', 128 | style: TextStyle( 129 | color: _currentIndex != 3 ? _defaultColor : _activeColor, 130 | ), 131 | ), 132 | ), 133 | ]), 134 | ); 135 | } 136 | 137 | @override 138 | // TODO: implement wantKeepAlive 139 | bool get wantKeepAlive => true; 140 | } 141 | -------------------------------------------------------------------------------- /lib/pages/my_page.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter/services.dart'; 3 | import 'package:flutter_ctrip/widget/webview.dart'; 4 | 5 | class MyPage extends StatefulWidget { 6 | @override 7 | _MyPageState createState() => _MyPageState(); 8 | } 9 | 10 | class _MyPageState extends State { 11 | @override 12 | Widget build(BuildContext context) { 13 | SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light); 14 | return Scaffold( 15 | body: WebView( 16 | url: 'https://m.ctrip.com/webapp/myctrip/', 17 | hideAppBar: true, 18 | backForbid: true, 19 | hideHead: true, 20 | ), 21 | ); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /lib/plugin/asr_manager.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/services.dart'; 2 | 3 | class AsrManager { 4 | static const MethodChannel _channel = const MethodChannel('asr_plugin'); 5 | 6 | ///开始录音 7 | static Future start({Map params}) async { 8 | return await _channel.invokeMethod('start', params ?? {}); 9 | } 10 | 11 | ///停止录音 12 | static Future stop() async { 13 | return await _channel.invokeMethod('stop'); 14 | } 15 | 16 | ///取消录音 17 | static Future cancel() async { 18 | return await _channel.invokeMethod('cancel'); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /lib/plugin/square_swiper_pagination.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_swiper/flutter_swiper.dart'; 3 | import 'package:flutter_page_indicator/flutter_page_indicator.dart'; 4 | 5 | class SquareSwiperPagination extends SwiperPlugin { 6 | ///color when current index,if set null , will be Theme.of(context).primaryColor 7 | final Color activeColor; 8 | 9 | ///,if set null , will be Theme.of(context).scaffoldBackgroundColor 10 | final Color color; 11 | 12 | ///Size of the dot when activate 13 | final double activeSize; 14 | 15 | ///Size of the dot 16 | final double size; 17 | 18 | /// Space between dots 19 | final double space; 20 | 21 | final Key key; 22 | 23 | const SquareSwiperPagination( 24 | {this.activeColor, 25 | this.color, 26 | this.key, 27 | this.size: 10.0, 28 | this.activeSize: 10.0, 29 | this.space: 3.0}); 30 | 31 | @override 32 | Widget build(BuildContext context, SwiperPluginConfig config) { 33 | if (config.itemCount > 20) { 34 | print( 35 | "The itemCount is too big, we suggest use FractionPaginationBuilder instead of DotSwiperPaginationBuilder in this sitituation"); 36 | } 37 | Color activeColor = this.activeColor; 38 | Color color = this.color; 39 | 40 | if (activeColor == null || color == null) { 41 | ThemeData themeData = Theme.of(context); 42 | activeColor = this.activeColor ?? themeData.primaryColor; 43 | color = this.color ?? themeData.scaffoldBackgroundColor; 44 | } 45 | 46 | if (config.indicatorLayout != PageIndicatorLayout.NONE && 47 | config.layout == SwiperLayout.DEFAULT) { 48 | return new PageIndicator( 49 | count: config.itemCount, 50 | controller: config.pageController, 51 | layout: config.indicatorLayout, 52 | size: size, 53 | activeColor: activeColor, 54 | color: color, 55 | space: space, 56 | ); 57 | } 58 | 59 | List list = []; 60 | 61 | int itemCount = config.itemCount; 62 | int activeIndex = config.activeIndex; 63 | 64 | for (int i = 0; i < itemCount; ++i) { 65 | bool active = i == activeIndex; 66 | list.add(Container( 67 | key: Key("pagination_$i"), 68 | margin: EdgeInsets.all(space), 69 | child: Container( 70 | // color: active ? activeColor : color, 71 | decoration: BoxDecoration( 72 | borderRadius: BorderRadius.circular(size/2), 73 | color: active ? activeColor : color, 74 | ), 75 | width: active ? activeSize * 2 : size, 76 | height: active ? activeSize : size, 77 | ), 78 | )); 79 | } 80 | 81 | if (config.scrollDirection == Axis.vertical) { 82 | return new Column( 83 | key: key, 84 | mainAxisSize: MainAxisSize.min, 85 | children: list, 86 | ); 87 | } else { 88 | return new Row( 89 | key: key, 90 | mainAxisSize: MainAxisSize.min, 91 | children: list, 92 | ); 93 | } 94 | } 95 | } -------------------------------------------------------------------------------- /lib/util/navigator_util.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter/services.dart'; 3 | import 'package:flutter/widgets.dart'; 4 | 5 | class NavigatorUtil { 6 | 7 | ///跳转到指定页面 8 | // ignore: avoid_init_to_null 9 | static push(BuildContext context, Widget page, { Function callBack }) { 10 | Navigator.push(context, MaterialPageRoute(builder: (context) => page)).then((res) { 11 | ///获取返回处理 12 | callBack != null ? callBack() : print('not fount callBack'); 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /lib/widget/loading_container.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class LoadingContainer extends StatelessWidget { 4 | final Widget child; 5 | final bool isLoading; 6 | final bool cover; 7 | 8 | 9 | LoadingContainer({@required this.child, @required this.isLoading, this.cover = false}); 10 | 11 | Widget get _loadingView { 12 | return Center( 13 | child: CircularProgressIndicator(), 14 | ); 15 | } 16 | 17 | @override 18 | Widget build(BuildContext context) { 19 | return !cover ? !isLoading ? child : _loadingView : Stack( 20 | children: [child, isLoading ? _loadingView: Container()], 21 | ); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /lib/widget/local_nav.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_ctrip/model/common_model.dart'; 3 | import 'package:flutter_ctrip/widget/webview.dart'; 4 | 5 | class LocalNav extends StatelessWidget { 6 | final List localNavList; 7 | 8 | const LocalNav({Key key, @required this.localNavList}) : super(key: key); 9 | 10 | @override 11 | Widget build(BuildContext context) { 12 | return Container( 13 | height: 74, 14 | decoration: BoxDecoration( 15 | color: Colors.white, 16 | borderRadius: BorderRadius.all(Radius.circular(6)), 17 | boxShadow: [ 18 | BoxShadow( 19 | color: Colors.black12, 20 | blurRadius: 12.0, 21 | ), 22 | ], 23 | ), 24 | child: Padding( 25 | padding: EdgeInsets.all(8), 26 | child: _items(context), 27 | ), 28 | ); 29 | } 30 | 31 | _items(BuildContext context) { 32 | if (localNavList == null) return null; 33 | List items = []; 34 | localNavList.forEach((model) { 35 | items.add(_item(context, model)); 36 | }); 37 | return Row( 38 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 39 | children: items, 40 | ); 41 | } 42 | 43 | Widget _item(BuildContext context, CommonModel model) { 44 | return GestureDetector( 45 | onTap: () { 46 | Navigator.push(context, MaterialPageRoute(builder: (context) => WebView( 47 | url: model.url, 48 | statusBarColor: model.statusBarColor, 49 | hideAppBar: model.hideAppBar, 50 | ))); 51 | }, 52 | child: Column( 53 | mainAxisAlignment: MainAxisAlignment.center, 54 | crossAxisAlignment: CrossAxisAlignment.center, 55 | children: [ 56 | Image.network( 57 | model.icon, 58 | width: 40, 59 | height: 40, 60 | ), 61 | Text( 62 | model.title, 63 | style: TextStyle(fontSize: 12), 64 | ), 65 | ], 66 | ), 67 | ); 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /lib/widget/sales_box.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_ctrip/model/common_model.dart'; 3 | import 'package:flutter_ctrip/model/sales_box_model.dart'; 4 | import 'package:flutter_ctrip/widget/webview.dart'; 5 | 6 | class SalesBox extends StatelessWidget { 7 | final SalesBoxModel salesBoxModel; 8 | 9 | const SalesBox({Key key, @required this.salesBoxModel}) : super(key: key); 10 | 11 | @override 12 | Widget build(BuildContext context) { 13 | return Container( 14 | child: _items(context), 15 | ); 16 | } 17 | 18 | _items(BuildContext context) { 19 | if (salesBoxModel == null) return null; 20 | List items = []; 21 | items.add(_doubleItem(context,salesBoxModel.bigCard1,salesBoxModel.bigCard2,true)); 22 | items.add(_doubleItem(context,salesBoxModel.smallCard1,salesBoxModel.smallCard2,false)); 23 | items.add(_doubleItem(context,salesBoxModel.smallCard3,salesBoxModel.smallCard4,false)); 24 | return Column( 25 | children: [ 26 | Container( 27 | height: 45, 28 | decoration: BoxDecoration( 29 | color: Colors.white, 30 | borderRadius: BorderRadius.circular(4), 31 | ), 32 | child: Row( 33 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 34 | children: [ 35 | Image.network( 36 | salesBoxModel.icon, 37 | height: 15, 38 | width: 79, 39 | ), 40 | GestureDetector( 41 | onTap: () { 42 | Navigator.push( 43 | context, 44 | MaterialPageRoute( 45 | builder: (context) => WebView( 46 | url: salesBoxModel.moreUrl, 47 | title: '更多活动', 48 | ), 49 | ), 50 | ); 51 | }, 52 | child: Container( 53 | padding: EdgeInsets.fromLTRB(10, 2, 10, 2), 54 | margin: EdgeInsets.only(right: 10), 55 | decoration: BoxDecoration( 56 | gradient: LinearGradient(colors: [ 57 | Color(0xffff4e63), 58 | Color(0xffff6cc9), 59 | ]), 60 | borderRadius: BorderRadius.circular(10), 61 | ), 62 | child: Text( 63 | '获取更多福利 >', 64 | style: TextStyle(fontSize: 12, color: Colors.white), 65 | ), 66 | ), 67 | ), 68 | ], 69 | ), 70 | ), 71 | Padding( 72 | padding: EdgeInsets.only(top: 4), 73 | ), 74 | items[0], 75 | Padding( 76 | padding: EdgeInsets.only(top: 4), 77 | ), 78 | items[1], 79 | Padding( 80 | padding: EdgeInsets.only(top: 4), 81 | ), 82 | items[2], 83 | ], 84 | ); 85 | } 86 | 87 | Widget _doubleItem(BuildContext context, CommonModel leftCard, CommonModel rightCard,bool big) { 88 | return Row( 89 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 90 | children: [ 91 | _item(context,leftCard,big,true), 92 | _item(context,rightCard,big,false), 93 | ], 94 | ); 95 | } 96 | 97 | _item(BuildContext context, CommonModel model, bool big, bool left) { 98 | return Expanded( 99 | child: GestureDetector( 100 | onTap: (){ 101 | Navigator.push( 102 | context, 103 | MaterialPageRoute( 104 | builder: (context) => WebView( 105 | url: model.url, 106 | title: model.title ?? '活动', 107 | ), 108 | ), 109 | ); 110 | }, 111 | child: Container( 112 | height: big?130:82, 113 | margin: left?EdgeInsets.only(right: 4):EdgeInsets.zero, 114 | decoration: BoxDecoration( 115 | color: Colors.white, 116 | ), 117 | child: Image.network(model.icon,fit: BoxFit.fill,), 118 | ), 119 | ), 120 | ); 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /lib/widget/scalable_box.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ScalableBox extends StatefulWidget { 4 | final List visibleSpans; 5 | final List unVisibleSpans; 6 | 7 | ScalableBox(this.visibleSpans, this.unVisibleSpans); 8 | 9 | @override 10 | _ScalableBoxState createState() => _ScalableBoxState(); 11 | } 12 | 13 | class _ScalableBoxState extends State { 14 | bool _isMore = true; 15 | 16 | @override 17 | Widget build(BuildContext context) { 18 | return Container( 19 | padding: EdgeInsets.fromLTRB(10, 0, 0, 10), 20 | child: Column( 21 | crossAxisAlignment: CrossAxisAlignment.start, 22 | children: [ 23 | widget.visibleSpans.length>=1?widget.visibleSpans[0]:Container(), 24 | widget.visibleSpans.length>=2?widget.visibleSpans[1]:Container(), 25 | widget.visibleSpans.length>=3?widget.visibleSpans[2]:Container(), 26 | Offstage( 27 | offstage: _isMore, 28 | child: Column( 29 | children: widget.unVisibleSpans, 30 | ), 31 | ), 32 | widget.unVisibleSpans.length>0?Container( 33 | child: GestureDetector( 34 | onTap: () { 35 | setState(() { 36 | _isMore = !_isMore; 37 | }); 38 | }, 39 | child: _isMore 40 | ? Row( 41 | mainAxisAlignment: MainAxisAlignment.center, 42 | crossAxisAlignment: CrossAxisAlignment.center, 43 | children: [ 44 | Text( 45 | '展开', 46 | style: TextStyle(color: Colors.blue, fontFamily: ''), 47 | ), 48 | Icon( 49 | Icons.keyboard_arrow_down, 50 | color: Colors.blue, 51 | size: 16, 52 | ), 53 | ], 54 | ) 55 | : Row( 56 | mainAxisAlignment: MainAxisAlignment.center, 57 | crossAxisAlignment: CrossAxisAlignment.center, 58 | children: [ 59 | Text( 60 | '收起', 61 | style: TextStyle(color: Colors.blue, fontFamily: ''), 62 | ), 63 | Icon( 64 | Icons.keyboard_arrow_up, 65 | color: Colors.blue, 66 | size: 16, 67 | ), 68 | ], 69 | ), 70 | ), 71 | ):Container(), 72 | ], 73 | ), 74 | ); 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /lib/widget/sub_nav.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_ctrip/model/common_model.dart'; 3 | import 'package:flutter_ctrip/widget/webview.dart'; 4 | 5 | class SubNav extends StatelessWidget { 6 | final List subNavList; 7 | 8 | const SubNav({Key key, @required this.subNavList}) : super(key: key); 9 | 10 | @override 11 | Widget build(BuildContext context) { 12 | return Container( 13 | decoration: BoxDecoration( 14 | borderRadius: BorderRadius.all(Radius.circular(6)), 15 | ), 16 | child: Padding( 17 | padding: EdgeInsets.all(8), 18 | child: _items(context), 19 | ), 20 | ); 21 | } 22 | 23 | _items(BuildContext context) { 24 | if (subNavList == null) return null; 25 | List items = []; 26 | subNavList.forEach((model) { 27 | items.add(_item(context, model)); 28 | }); 29 | int separate = (subNavList.length / 2 + 0.5).toInt(); 30 | return Column( 31 | children: [ 32 | Row( 33 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 34 | children: items.sublist(0, separate), 35 | ), 36 | Padding(padding: EdgeInsets.only(top: 10),), 37 | Row( 38 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 39 | children: items.sublist(separate, subNavList.length), 40 | ), 41 | ], 42 | ); 43 | } 44 | 45 | Widget _item(BuildContext context, CommonModel model) { 46 | return Expanded( 47 | flex: 1, 48 | child: GestureDetector( 49 | onTap: () { 50 | Navigator.push(context, MaterialPageRoute(builder: (context) => WebView( 51 | url: model.url, 52 | statusBarColor: model.statusBarColor, 53 | hideAppBar: model.hideAppBar, 54 | ))); 55 | }, 56 | child: Column( 57 | mainAxisAlignment: MainAxisAlignment.center, 58 | crossAxisAlignment: CrossAxisAlignment.center, 59 | children: [ 60 | Image.network( 61 | model.icon, 62 | width: 28, 63 | height: 28, 64 | ), 65 | Text( 66 | model.title, 67 | style: TextStyle(fontSize: 12), 68 | ), 69 | ], 70 | ), 71 | ), 72 | ); 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /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_ctrip/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 | --------------------------------------------------------------------------------