├── .flutter-plugins ├── .flutter-plugins-dependencies ├── .metadata ├── .packages ├── README.md ├── android ├── android.iml ├── app │ ├── app.iml │ ├── build.gradle │ ├── chongmeng-android-app.iml │ └── src │ │ ├── debug │ │ └── AndroidManifest.xml │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── io │ │ │ │ └── flutter │ │ │ │ └── plugins │ │ │ │ └── GeneratedPluginRegistrant.java │ │ ├── kotlin │ │ │ └── com │ │ │ │ └── chongmeng │ │ │ │ └── chongmeng │ │ │ │ ├── AppApplication.kt │ │ │ │ ├── MainActivity.kt │ │ │ │ ├── UpdateVersionPlugin.java │ │ │ │ └── wxapi │ │ │ │ └── WXEntryActivity.java │ │ └── res │ │ │ ├── drawable-xhdpi │ │ │ ├── login_bt.png │ │ │ ├── logo.png │ │ │ └── shanyan_close.png │ │ │ ├── drawable-xxhdpi │ │ │ ├── login_bt.png │ │ │ └── logo.png │ │ │ ├── drawable │ │ │ └── launch_background.xml │ │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxxhdpi │ │ │ └── ic_launcher.png │ │ │ └── values │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ └── profile │ │ └── AndroidManifest.xml ├── build.gradle ├── chongmeng-android.iml ├── chongmeng_android.iml ├── gradle.properties ├── gradlew ├── gradlew.bat ├── key.properties ├── local.properties ├── settings.gradle └── settings_aar.gradle ├── assets ├── 2.0x │ ├── auto_page_bg.png │ ├── home_movie_banner.png │ ├── home_page_icon_gonggao.png │ ├── logo.png │ ├── main_community_normal.png │ ├── main_community_select.png │ ├── main_home_normal.png │ ├── main_home_select.png │ ├── main_my_normal.png │ ├── main_my_select.png │ ├── main_store_normal.png │ ├── main_store_select.png │ ├── movie_cinema_icon_normal.png │ ├── movie_cinema_icon_select.png │ ├── movie_movie_icon_normal.png │ ├── movie_movie_icon_select.png │ ├── qq.png │ ├── qq_zone.png │ ├── signin_page_banner.png │ ├── signin_page_sign_item_bg.png │ ├── signin_page_sign_success.png │ ├── splash_text.png │ ├── update_page_bg.png │ ├── update_page_cancle.png │ ├── wechat.png │ └── wechat_time_line.png ├── 3.0x │ ├── auto_page_bg.png │ ├── home_movie_banner.png │ ├── home_page_icon_gonggao.png │ ├── logo.png │ ├── main_community_normal.png │ ├── main_community_select.png │ ├── main_home_normal.png │ ├── main_home_select.png │ ├── main_my_normal.png │ ├── main_my_select.png │ ├── main_store_normal.png │ ├── main_store_select.png │ ├── movie_cinema_icon_normal.png │ ├── movie_cinema_icon_select.png │ ├── movie_movie_icon_normal.png │ ├── movie_movie_icon_select.png │ ├── qq.png │ ├── qq_zone.png │ ├── signin_page_banner.png │ ├── signin_page_sign_item_bg.png │ ├── signin_page_sign_success.png │ ├── splash_text.png │ ├── update_page_bg.png │ ├── update_page_cancle.png │ ├── wechat.png │ └── wechat_time_line.png ├── account_page_no_login.png ├── adoption_age.png ├── adoption_expelling_parasite.png ├── adoption_immune.png ├── adoption_immune_sex_m.png ├── adoption_immune_sex_w.png ├── dynamic_message.png ├── home_page_adopt.png ├── home_page_cat.png ├── home_page_doctor.png ├── home_page_dog.png ├── home_page_love.png ├── home_page_qa.png ├── home_page_recipe.png ├── home_page_sign.png ├── invite.png └── splash_page_bg.png ├── build_android_script.sh ├── chongmeng.iml ├── ios.sh ├── ios ├── Podfile ├── Podfile.lock ├── Runner.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ ├── xcshareddata │ │ └── xcschemes │ │ │ └── Runner.xcscheme │ └── xcuserdata │ │ └── zhangruiyu.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── Runner.xcworkspace │ ├── contents.xcworkspacedata │ ├── xcshareddata │ │ ├── IDEWorkspaceChecks.plist │ │ └── WorkspaceSettings.xcsettings │ └── xcuserdata │ │ └── zhangruiyu.xcuserdatad │ │ ├── UserInterfaceState.xcuserstate │ │ └── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist ├── Runner │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Assets.xcassets │ │ ├── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ ├── icon-1024.png │ │ │ ├── icon-20-ipad.png │ │ │ ├── icon-20@2x-ipad.png │ │ │ ├── icon-20@2x.png │ │ │ ├── icon-20@3x.png │ │ │ ├── icon-29-ipad.png │ │ │ ├── icon-29.png │ │ │ ├── icon-29@2x-ipad.png │ │ │ ├── icon-29@2x.png │ │ │ ├── icon-29@3x.png │ │ │ ├── icon-40.png │ │ │ ├── icon-40@2x.png │ │ │ ├── icon-40@3x.png │ │ │ ├── icon-50.png │ │ │ ├── icon-50@2x.png │ │ │ ├── icon-57.png │ │ │ ├── icon-57@2x.png │ │ │ ├── icon-60@2x.png │ │ │ ├── icon-60@3x.png │ │ │ ├── icon-72.png │ │ │ ├── icon-72@2x.png │ │ │ ├── icon-76.png │ │ │ ├── icon-76@2x.png │ │ │ └── icon-83.5@2x.png │ │ ├── Contents.json │ │ ├── LaunchImage.imageset │ │ │ ├── Contents.json │ │ │ ├── LaunchImage.png │ │ │ ├── LaunchImage@2x.png │ │ │ ├── LaunchImage@3x.png │ │ │ └── README.md │ │ ├── login_bt.imageset │ │ │ ├── Contents.json │ │ │ ├── login_bt@2x.png │ │ │ └── login_bt@3x.png │ │ ├── logo.imageset │ │ │ ├── Contents.json │ │ │ ├── logo@2x.png │ │ │ └── logo@3x.png │ │ └── shanyan_close.imageset │ │ │ ├── Contents.json │ │ │ ├── shanyan_close@2x.png │ │ │ └── shanyan_close@3x.png │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── GeneratedPluginRegistrant.h │ ├── GeneratedPluginRegistrant.m │ ├── Info.plist │ ├── Runner.entitlements │ ├── apple-app-site-association │ ├── main.m │ └── zh-Hans.lproj │ │ ├── LaunchScreen.strings │ │ └── Main.strings └── ServiceDefinitions.json ├── lib ├── anim │ └── slide_transition_x.dart ├── app.dart ├── components │ ├── community_user_head │ │ ├── action.dart │ │ ├── component.dart │ │ ├── effect.dart │ │ ├── reducer.dart │ │ ├── state.dart │ │ └── view.dart │ ├── dynamic │ │ ├── adapter │ │ │ ├── adapter.dart │ │ │ ├── item_dynamic_adapter_component │ │ │ │ ├── action.dart │ │ │ │ ├── component.dart │ │ │ │ ├── effect.dart │ │ │ │ ├── item_dynamic_content_adapter │ │ │ │ │ ├── adapter.dart │ │ │ │ │ └── state.dart │ │ │ │ ├── reducer.dart │ │ │ │ ├── state.dart │ │ │ │ └── view.dart │ │ │ └── state.dart │ │ ├── dynamic_component │ │ │ ├── action.dart │ │ │ ├── component.dart │ │ │ ├── effect.dart │ │ │ ├── model │ │ │ │ └── dynamic_liked_entity.dart │ │ │ ├── reducer.dart │ │ │ ├── state.dart │ │ │ └── view.dart │ │ └── model │ │ │ └── item_page_data.dart │ ├── notice │ │ ├── action.dart │ │ ├── component.dart │ │ ├── effect.dart │ │ ├── reducer.dart │ │ ├── state.dart │ │ └── view.dart │ └── product │ │ ├── action.dart │ │ ├── component.dart │ │ ├── effect.dart │ │ ├── reducer.dart │ │ └── view.dart ├── constants │ ├── colors.dart │ ├── constants.dart │ ├── http_constants.dart │ ├── send_code_type.dart │ └── text_style.dart ├── entity_factory.dart ├── ext │ └── context_ext.dart ├── function │ ├── adoption │ │ ├── adoption_add │ │ │ ├── action.dart │ │ │ ├── effect.dart │ │ │ ├── page.dart │ │ │ ├── reducer.dart │ │ │ ├── state.dart │ │ │ └── view.dart │ │ ├── details │ │ │ ├── action.dart │ │ │ ├── effect.dart │ │ │ ├── page.dart │ │ │ ├── reducer.dart │ │ │ ├── state.dart │ │ │ └── view.dart │ │ └── my_adoption │ │ │ ├── action.dart │ │ │ ├── effect.dart │ │ │ ├── model │ │ │ └── my_adoption_entity.dart │ │ │ ├── page.dart │ │ │ ├── reducer.dart │ │ │ ├── state.dart │ │ │ └── view.dart │ ├── app_info │ │ ├── action.dart │ │ ├── effect.dart │ │ ├── page.dart │ │ ├── reducer.dart │ │ ├── state.dart │ │ └── view.dart │ ├── auto │ │ ├── action.dart │ │ ├── effect.dart │ │ ├── model │ │ │ └── login_entity.dart │ │ ├── page.dart │ │ ├── reducer.dart │ │ ├── state.dart │ │ └── view.dart │ ├── bindtel │ │ ├── action.dart │ │ ├── effect.dart │ │ ├── page.dart │ │ ├── reducer.dart │ │ ├── state.dart │ │ └── view.dart │ ├── complain │ │ ├── action.dart │ │ ├── effect.dart │ │ ├── page.dart │ │ ├── reducer.dart │ │ ├── state.dart │ │ └── view.dart │ ├── conversation │ │ ├── action.dart │ │ ├── effect.dart │ │ ├── item │ │ │ ├── action.dart │ │ │ ├── adapter │ │ │ │ ├── action.dart │ │ │ │ ├── adapter.dart │ │ │ │ ├── effect.dart │ │ │ │ └── reducer.dart │ │ │ ├── effect.dart │ │ │ ├── message_body │ │ │ │ ├── action.dart │ │ │ │ ├── component.dart │ │ │ │ ├── effect.dart │ │ │ │ ├── reducer.dart │ │ │ │ ├── state.dart │ │ │ │ └── view.dart │ │ │ ├── page.dart │ │ │ ├── reducer.dart │ │ │ ├── state.dart │ │ │ └── view.dart │ │ ├── page.dart │ │ ├── reducer.dart │ │ ├── state.dart │ │ └── view.dart │ ├── edit_text │ │ ├── action.dart │ │ ├── effect.dart │ │ ├── page.dart │ │ ├── reducer.dart │ │ ├── state.dart │ │ └── view.dart │ ├── integral │ │ ├── model │ │ │ ├── integral_record_entity.dart │ │ │ └── total_integral_entity.dart │ │ ├── pay_result │ │ │ ├── action.dart │ │ │ ├── effect.dart │ │ │ ├── page.dart │ │ │ ├── reducer.dart │ │ │ ├── state.dart │ │ │ └── view.dart │ │ ├── recharge │ │ │ ├── action.dart │ │ │ ├── effect.dart │ │ │ ├── model │ │ │ │ ├── pay_result_entity.dart │ │ │ │ ├── recharge_commodity_entity.dart │ │ │ │ └── wx_pay_entity.dart │ │ │ ├── page.dart │ │ │ ├── reducer.dart │ │ │ ├── state.dart │ │ │ └── view.dart │ │ └── record │ │ │ ├── action.dart │ │ │ ├── effect.dart │ │ │ ├── page.dart │ │ │ ├── reducer.dart │ │ │ ├── state.dart │ │ │ └── view.dart │ ├── invite │ │ ├── action.dart │ │ ├── effect.dart │ │ ├── model │ │ │ └── invite_entity.dart │ │ ├── page.dart │ │ ├── reducer.dart │ │ ├── state.dart │ │ └── view.dart │ ├── main │ │ ├── account │ │ │ ├── action.dart │ │ │ ├── component.dart │ │ │ ├── effect.dart │ │ │ ├── model │ │ │ │ └── account_entity.dart │ │ │ ├── reducer.dart │ │ │ ├── state.dart │ │ │ └── view.dart │ │ ├── action.dart │ │ ├── adoption │ │ │ ├── action.dart │ │ │ ├── component.dart │ │ │ ├── effect.dart │ │ │ ├── model │ │ │ │ └── adoption_entity.dart │ │ │ ├── reducer.dart │ │ │ ├── state.dart │ │ │ └── view.dart │ │ ├── community │ │ │ ├── action.dart │ │ │ ├── commit_media │ │ │ │ ├── action.dart │ │ │ │ ├── effect.dart │ │ │ │ ├── model │ │ │ │ │ ├── item_bin.dart │ │ │ │ │ └── upload_task.dart │ │ │ │ ├── page.dart │ │ │ │ ├── reducer.dart │ │ │ │ ├── state.dart │ │ │ │ └── view.dart │ │ │ ├── commit_text │ │ │ │ ├── action.dart │ │ │ │ ├── effect.dart │ │ │ │ ├── page.dart │ │ │ │ ├── reducer.dart │ │ │ │ ├── state.dart │ │ │ │ └── view.dart │ │ │ ├── component.dart │ │ │ ├── details │ │ │ │ ├── action.dart │ │ │ │ ├── adapter │ │ │ │ │ ├── action.dart │ │ │ │ │ ├── adapter.dart │ │ │ │ │ ├── effect.dart │ │ │ │ │ ├── reducer.dart │ │ │ │ │ ├── state.dart │ │ │ │ │ └── view.dart │ │ │ │ ├── effect.dart │ │ │ │ ├── model │ │ │ │ │ └── comment_entity.dart │ │ │ │ ├── page.dart │ │ │ │ ├── reducer.dart │ │ │ │ ├── reply_component │ │ │ │ │ ├── action.dart │ │ │ │ │ ├── component.dart │ │ │ │ │ ├── effect.dart │ │ │ │ │ ├── reducer.dart │ │ │ │ │ ├── state.dart │ │ │ │ │ └── view.dart │ │ │ │ ├── state.dart │ │ │ │ └── view.dart │ │ │ ├── effect.dart │ │ │ ├── model │ │ │ │ └── dynamic_list_entity.dart │ │ │ ├── reducer.dart │ │ │ ├── selecttalktype │ │ │ │ ├── action.dart │ │ │ │ ├── effect.dart │ │ │ │ ├── page.dart │ │ │ │ ├── state.dart │ │ │ │ └── view.dart │ │ │ ├── state.dart │ │ │ └── view.dart │ │ ├── effect.dart │ │ ├── home │ │ │ ├── action.dart │ │ │ ├── adapter │ │ │ │ ├── action.dart │ │ │ │ ├── adapter.dart │ │ │ │ ├── effect.dart │ │ │ │ ├── reducer.dart │ │ │ │ ├── state.dart │ │ │ │ └── view.dart │ │ │ ├── banner │ │ │ │ ├── action.dart │ │ │ │ ├── component.dart │ │ │ │ ├── effect.dart │ │ │ │ ├── state.dart │ │ │ │ └── view.dart │ │ │ ├── component.dart │ │ │ ├── effect.dart │ │ │ ├── model │ │ │ │ ├── ali_product_item.dart │ │ │ │ └── home_entity.dart │ │ │ ├── reducer.dart │ │ │ ├── state.dart │ │ │ ├── tab │ │ │ │ ├── action.dart │ │ │ │ ├── component.dart │ │ │ │ ├── effect.dart │ │ │ │ ├── state.dart │ │ │ │ └── view.dart │ │ │ └── view.dart │ │ ├── page.dart │ │ ├── reducer.dart │ │ ├── state.dart │ │ ├── store │ │ │ ├── action.dart │ │ │ ├── adapter │ │ │ │ ├── action.dart │ │ │ │ ├── adapter.dart │ │ │ │ ├── effect.dart │ │ │ │ ├── reducer.dart │ │ │ │ ├── state.dart │ │ │ │ └── view.dart │ │ │ ├── component.dart │ │ │ ├── coupon_detail │ │ │ │ ├── action.dart │ │ │ │ ├── effect.dart │ │ │ │ ├── model │ │ │ │ │ └── coupon_entity.dart │ │ │ │ ├── page.dart │ │ │ │ ├── reducer.dart │ │ │ │ ├── state.dart │ │ │ │ └── view.dart │ │ │ ├── effect.dart │ │ │ ├── integral_commodity_detail │ │ │ │ ├── action.dart │ │ │ │ ├── effect.dart │ │ │ │ ├── page.dart │ │ │ │ ├── reducer.dart │ │ │ │ ├── state.dart │ │ │ │ └── view.dart │ │ │ ├── integral_component │ │ │ │ ├── action.dart │ │ │ │ ├── component.dart │ │ │ │ ├── effect.dart │ │ │ │ ├── reducer.dart │ │ │ │ ├── state.dart │ │ │ │ └── view.dart │ │ │ ├── integral_eleme_component │ │ │ │ ├── action.dart │ │ │ │ ├── component.dart │ │ │ │ ├── effect.dart │ │ │ │ ├── reducer.dart │ │ │ │ ├── state.dart │ │ │ │ └── view.dart │ │ │ ├── model │ │ │ │ └── integral_commodity_entity.dart │ │ │ ├── reducer.dart │ │ │ ├── state.dart │ │ │ └── view.dart │ │ └── view.dart │ ├── movie │ │ ├── action.dart │ │ ├── cinema_list │ │ │ ├── action.dart │ │ │ ├── component.dart │ │ │ ├── effect.dart │ │ │ ├── model │ │ │ │ └── cinema_list_entity.dart │ │ │ ├── reducer.dart │ │ │ ├── state.dart │ │ │ └── view.dart │ │ ├── cinema_search_delegate.dart │ │ ├── effect.dart │ │ ├── model │ │ │ ├── hot_movie_entity.dart │ │ │ ├── movie_params_entity.dart │ │ │ └── search_cinema_entity.dart │ │ ├── movie_cinema │ │ │ ├── action.dart │ │ │ ├── effect.dart │ │ │ ├── model │ │ │ │ ├── cinema_movies_entity.dart │ │ │ │ └── movie_price_entity.dart │ │ │ ├── page.dart │ │ │ ├── reducer.dart │ │ │ ├── state.dart │ │ │ └── view.dart │ │ ├── movie_city │ │ │ ├── action.dart │ │ │ ├── effect.dart │ │ │ ├── model │ │ │ │ └── cinema_city_entity.dart │ │ │ ├── page.dart │ │ │ ├── reducer.dart │ │ │ ├── state.dart │ │ │ └── view.dart │ │ ├── movie_details │ │ │ ├── action.dart │ │ │ ├── effect.dart │ │ │ ├── model │ │ │ │ ├── movie_details_entity.dart │ │ │ │ └── movie_schedule_entity.dart │ │ │ ├── page.dart │ │ │ ├── reducer.dart │ │ │ ├── state.dart │ │ │ └── view.dart │ │ ├── movie_list │ │ │ ├── action.dart │ │ │ ├── component.dart │ │ │ ├── effect.dart │ │ │ ├── reducer.dart │ │ │ ├── state.dart │ │ │ └── view.dart │ │ ├── movie_order_pre │ │ │ ├── action.dart │ │ │ ├── effect.dart │ │ │ ├── page.dart │ │ │ ├── reducer.dart │ │ │ ├── state.dart │ │ │ └── view.dart │ │ ├── movie_seat │ │ │ ├── action.dart │ │ │ ├── effect.dart │ │ │ ├── model │ │ │ │ ├── data.json │ │ │ │ ├── movie_order_entity.dart │ │ │ │ └── seat_entity.dart │ │ │ ├── page.dart │ │ │ ├── reducer.dart │ │ │ ├── state.dart │ │ │ └── view.dart │ │ ├── page.dart │ │ ├── reducer.dart │ │ ├── seartch_cinema │ │ │ ├── action.dart │ │ │ ├── effect.dart │ │ │ ├── page.dart │ │ │ ├── reducer.dart │ │ │ ├── state.dart │ │ │ └── view.dart │ │ ├── state.dart │ │ └── view.dart │ ├── my_order │ │ ├── action.dart │ │ ├── effect.dart │ │ ├── model │ │ │ └── my_order_entity.dart │ │ ├── page.dart │ │ ├── reducer.dart │ │ ├── state.dart │ │ ├── view.dart │ │ ├── virtual_product_review │ │ │ ├── action.dart │ │ │ ├── effect.dart │ │ │ ├── model │ │ │ │ └── virtual_pruduct.dart │ │ │ ├── page.dart │ │ │ ├── reducer.dart │ │ │ ├── state.dart │ │ │ └── view.dart │ │ └── web_virtual_product_preview │ │ │ ├── action.dart │ │ │ ├── effect.dart │ │ │ ├── page.dart │ │ │ ├── reducer.dart │ │ │ ├── state.dart │ │ │ └── view.dart │ ├── my_pet │ │ ├── action.dart │ │ ├── add │ │ │ ├── action.dart │ │ │ ├── effect.dart │ │ │ ├── page.dart │ │ │ ├── reducer.dart │ │ │ ├── state.dart │ │ │ └── view.dart │ │ ├── effect.dart │ │ ├── model │ │ │ └── pet_entity.dart │ │ ├── page.dart │ │ ├── reducer.dart │ │ ├── selectsubtype │ │ │ ├── action.dart │ │ │ ├── effect.dart │ │ │ ├── model │ │ │ │ └── pet_sub_type_entity.dart │ │ │ ├── page.dart │ │ │ ├── state.dart │ │ │ └── view.dart │ │ ├── selecttype │ │ │ ├── action.dart │ │ │ ├── effect.dart │ │ │ ├── model │ │ │ │ └── pet_type_entity.dart │ │ │ ├── page.dart │ │ │ ├── state.dart │ │ │ └── view.dart │ │ ├── state.dart │ │ └── view.dart │ ├── product_details │ │ ├── action.dart │ │ ├── effect.dart │ │ ├── model │ │ │ ├── details_entity.dart │ │ │ └── share_product_entity.dart │ │ ├── page.dart │ │ ├── reducer.dart │ │ ├── state.dart │ │ └── view.dart │ ├── recipe │ │ ├── action.dart │ │ ├── effect.dart │ │ ├── model │ │ │ └── recipe_entity.dart │ │ ├── page.dart │ │ ├── reducer.dart │ │ ├── state.dart │ │ └── view.dart │ ├── record │ │ ├── action.dart │ │ ├── effect.dart │ │ ├── page.dart │ │ ├── reducer.dart │ │ ├── review │ │ │ ├── action.dart │ │ │ ├── effect.dart │ │ │ ├── page.dart │ │ │ ├── reducer.dart │ │ │ ├── state.dart │ │ │ └── view.dart │ │ ├── state.dart │ │ └── view.dart │ ├── review_image │ │ ├── action.dart │ │ ├── effect.dart │ │ ├── page.dart │ │ ├── reducer.dart │ │ ├── state.dart │ │ └── view.dart │ ├── safe_center │ │ ├── action.dart │ │ ├── effect.dart │ │ ├── model │ │ │ └── safe_entity.dart │ │ ├── page.dart │ │ ├── reducer.dart │ │ ├── state.dart │ │ └── view.dart │ ├── search │ │ ├── action.dart │ │ ├── adapter │ │ │ ├── action.dart │ │ │ ├── adapter.dart │ │ │ ├── effect.dart │ │ │ ├── reducer.dart │ │ │ └── view.dart │ │ ├── effect.dart │ │ ├── filtrate │ │ │ ├── action.dart │ │ │ ├── component.dart │ │ │ ├── effect.dart │ │ │ ├── reducer.dart │ │ │ ├── state.dart │ │ │ └── view.dart │ │ ├── model │ │ │ └── search_result_entity.dart │ │ ├── page.dart │ │ ├── reducer.dart │ │ ├── state.dart │ │ └── view.dart │ ├── setting │ │ ├── action.dart │ │ ├── effect.dart │ │ ├── page.dart │ │ ├── reducer.dart │ │ ├── state.dart │ │ └── view.dart │ ├── share │ │ ├── action.dart │ │ ├── effect.dart │ │ ├── page.dart │ │ ├── reducer.dart │ │ ├── state.dart │ │ └── view.dart │ ├── shipping_address │ │ ├── action.dart │ │ ├── effect.dart │ │ ├── model │ │ │ └── shipping_address_entity.dart │ │ ├── page.dart │ │ ├── reducer.dart │ │ ├── shipping_address_add │ │ │ ├── action.dart │ │ │ ├── effect.dart │ │ │ ├── page.dart │ │ │ ├── reducer.dart │ │ │ ├── state.dart │ │ │ └── view.dart │ │ ├── state.dart │ │ └── view.dart │ ├── signin │ │ ├── action.dart │ │ ├── effect.dart │ │ ├── model │ │ │ ├── sign_in_result_entity.dart │ │ │ └── sign_list_entity.dart │ │ ├── page.dart │ │ ├── reducer.dart │ │ ├── signinresult │ │ │ ├── action.dart │ │ │ ├── effect.dart │ │ │ ├── page.dart │ │ │ ├── reducer.dart │ │ │ ├── state.dart │ │ │ └── view.dart │ │ ├── state.dart │ │ └── view.dart │ ├── splash │ │ ├── action.dart │ │ ├── effect.dart │ │ ├── page.dart │ │ ├── reducer.dart │ │ ├── state.dart │ │ └── view.dart │ ├── tally │ │ ├── action.dart │ │ ├── add │ │ │ ├── action.dart │ │ │ ├── effect.dart │ │ │ ├── page.dart │ │ │ ├── reducer.dart │ │ │ ├── state.dart │ │ │ └── view.dart │ │ ├── effect.dart │ │ ├── entity │ │ │ ├── current_user_tally_entity.dart │ │ │ └── tally_tag_entity.dart │ │ ├── page.dart │ │ ├── reducer.dart │ │ ├── state.dart │ │ └── view.dart │ ├── update │ │ ├── action.dart │ │ ├── effect.dart │ │ ├── model │ │ │ └── update_entity.dart │ │ ├── page.dart │ │ ├── reducer.dart │ │ ├── state.dart │ │ └── view.dart │ ├── user_details │ │ ├── action.dart │ │ ├── edit │ │ │ ├── action.dart │ │ │ ├── effect.dart │ │ │ ├── page.dart │ │ │ ├── reducer.dart │ │ │ ├── state.dart │ │ │ └── view.dart │ │ ├── effect.dart │ │ ├── model │ │ │ └── user_details_entity.dart │ │ ├── page.dart │ │ ├── reducer.dart │ │ ├── state.dart │ │ └── view.dart │ └── webview │ │ ├── action.dart │ │ ├── effect.dart │ │ ├── page.dart │ │ ├── reducer.dart │ │ ├── state.dart │ │ └── view.dart ├── generated │ └── json │ │ ├── base │ │ ├── json_convert_content.dart │ │ └── json_filed.dart │ │ ├── cinema_list_entity_helper.dart │ │ ├── movie_price_entity_helper.dart │ │ ├── outermost_entity_helper.dart │ │ └── search_cinema_entity_helper.dart ├── global_store │ ├── action.dart │ ├── reducer.dart │ ├── state.dart │ └── store.dart ├── helper │ ├── model │ │ ├── auto_entity.dart │ │ └── local_user.dart │ ├── navigator_helper.dart │ ├── permission_helper.dart │ ├── qqwx_helper.dart │ └── user_helper.dart ├── localizetion │ ├── data │ │ ├── abstract_locale_string.dart │ │ ├── locale_string_en.dart │ │ └── locale_string_zh.dart │ ├── default_localization.dart │ ├── fallback_cupertino_localisations_delegate.dart │ └── localizations_delegate.dart ├── main.dart ├── network │ ├── entity │ │ ├── cos_entity.dart │ │ ├── outermost_entity.dart │ │ ├── share_result_entity.dart │ │ └── share_url_entity.dart │ ├── net_exception.dart │ └── net_work.dart ├── routes.dart ├── utils │ ├── color_utils.dart │ ├── completer_utils.dart │ ├── date_utils.dart │ ├── device_utils.dart │ ├── hex_color.dart │ ├── ios_model.dart │ ├── jiguang_utils.dart │ ├── jmessage_utils.dart │ ├── keyboard_utils.dart │ ├── map_utils.dart │ ├── model │ │ └── jiguang_entity.dart │ ├── platform_utils.dart │ ├── share_utils.dart │ └── window_utils.dart └── widget │ ├── Toolbar.dart │ ├── back_button_arrows.dart │ ├── back_widget.dart │ ├── commodity_count.dart │ ├── count_down_button.dart │ ├── custom_dialog.dart │ ├── dotline_widget.dart │ ├── empty_widget.dart │ ├── eye_text_form_field.dart │ ├── keep_alive_widget.dart │ ├── loadling_widget.dart │ ├── no_scale_text_widget.dart │ ├── oval_swiper_pagination_builder.dart │ ├── record_button_widget.dart │ ├── refresh_widget.dart │ ├── select_bottom.dart │ ├── sliver_animated_list.dart │ ├── sliver_app_bar_delegate.dart │ ├── staic_rating_bar.dart │ ├── vertical_line.dart │ └── webview_toolbar.dart ├── pubspec.lock ├── pubspec.yaml ├── res └── values │ └── strings_en.arb └── test └── test.dart /.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: bc7bc940836f1f834699625426795fd6f07c18ec 8 | channel: beta 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/kotlin/com/chongmeng/chongmeng/AppApplication.kt: -------------------------------------------------------------------------------- 1 | package com.chongmeng.chongmeng 2 | 3 | class AppApplication { 4 | 5 | } -------------------------------------------------------------------------------- /android/app/src/main/kotlin/com/chongmeng/chongmeng/wxapi/WXEntryActivity.java: -------------------------------------------------------------------------------- 1 | package com.chongmeng.chongmeng.wxapi; 2 | 3 | import com.jarvan.fluwx.wxapi.FluwxWXEntryActivity; 4 | import com.umeng.socialize.weixin.view.WXCallbackActivity; 5 | 6 | //public class WXEntryActivity extends FluwxWXEntryActivity { 7 | public class WXEntryActivity extends WXCallbackActivity { 8 | } 9 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-xhdpi/login_bt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/android/app/src/main/res/drawable-xhdpi/login_bt.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-xhdpi/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/android/app/src/main/res/drawable-xhdpi/logo.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-xhdpi/shanyan_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/android/app/src/main/res/drawable-xhdpi/shanyan_close.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-xxhdpi/login_bt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/android/app/src/main/res/drawable-xxhdpi/login_bt.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-xxhdpi/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/android/app/src/main/res/drawable-xxhdpi/logo.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 宠窝 3 | 4 | 5 | -------------------------------------------------------------------------------- /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/chongmeng-android.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.enableJetifier=true 3 | android.useAndroidX=true 4 | android.enableR8=true 5 | -------------------------------------------------------------------------------- /android/key.properties: -------------------------------------------------------------------------------- 1 | storePassword=example 2 | keyPassword=example 3 | keyAlias=example 4 | storeFile=../key_store -------------------------------------------------------------------------------- /android/local.properties: -------------------------------------------------------------------------------- 1 | flutter.buildMode=debug 2 | flutter.versionName=1.5.3 3 | flutter.sdk=/Users/zhangruiyu/tools/flutter 4 | sdk.dir=/Users/zhangruiyu/tools/sdk 5 | flutter.versionCode=22 -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() 4 | 5 | def plugins = new Properties() 6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') 7 | if (pluginsFile.exists()) { 8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } 9 | } 10 | 11 | plugins.each { name, path -> 12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() 13 | include ":$name" 14 | project(":$name").projectDir = pluginDirectory 15 | } 16 | -------------------------------------------------------------------------------- /android/settings_aar.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /assets/2.0x/auto_page_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/2.0x/auto_page_bg.png -------------------------------------------------------------------------------- /assets/2.0x/home_movie_banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/2.0x/home_movie_banner.png -------------------------------------------------------------------------------- /assets/2.0x/home_page_icon_gonggao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/2.0x/home_page_icon_gonggao.png -------------------------------------------------------------------------------- /assets/2.0x/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/2.0x/logo.png -------------------------------------------------------------------------------- /assets/2.0x/main_community_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/2.0x/main_community_normal.png -------------------------------------------------------------------------------- /assets/2.0x/main_community_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/2.0x/main_community_select.png -------------------------------------------------------------------------------- /assets/2.0x/main_home_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/2.0x/main_home_normal.png -------------------------------------------------------------------------------- /assets/2.0x/main_home_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/2.0x/main_home_select.png -------------------------------------------------------------------------------- /assets/2.0x/main_my_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/2.0x/main_my_normal.png -------------------------------------------------------------------------------- /assets/2.0x/main_my_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/2.0x/main_my_select.png -------------------------------------------------------------------------------- /assets/2.0x/main_store_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/2.0x/main_store_normal.png -------------------------------------------------------------------------------- /assets/2.0x/main_store_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/2.0x/main_store_select.png -------------------------------------------------------------------------------- /assets/2.0x/movie_cinema_icon_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/2.0x/movie_cinema_icon_normal.png -------------------------------------------------------------------------------- /assets/2.0x/movie_cinema_icon_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/2.0x/movie_cinema_icon_select.png -------------------------------------------------------------------------------- /assets/2.0x/movie_movie_icon_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/2.0x/movie_movie_icon_normal.png -------------------------------------------------------------------------------- /assets/2.0x/movie_movie_icon_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/2.0x/movie_movie_icon_select.png -------------------------------------------------------------------------------- /assets/2.0x/qq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/2.0x/qq.png -------------------------------------------------------------------------------- /assets/2.0x/qq_zone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/2.0x/qq_zone.png -------------------------------------------------------------------------------- /assets/2.0x/signin_page_banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/2.0x/signin_page_banner.png -------------------------------------------------------------------------------- /assets/2.0x/signin_page_sign_item_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/2.0x/signin_page_sign_item_bg.png -------------------------------------------------------------------------------- /assets/2.0x/signin_page_sign_success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/2.0x/signin_page_sign_success.png -------------------------------------------------------------------------------- /assets/2.0x/splash_text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/2.0x/splash_text.png -------------------------------------------------------------------------------- /assets/2.0x/update_page_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/2.0x/update_page_bg.png -------------------------------------------------------------------------------- /assets/2.0x/update_page_cancle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/2.0x/update_page_cancle.png -------------------------------------------------------------------------------- /assets/2.0x/wechat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/2.0x/wechat.png -------------------------------------------------------------------------------- /assets/2.0x/wechat_time_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/2.0x/wechat_time_line.png -------------------------------------------------------------------------------- /assets/3.0x/auto_page_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/3.0x/auto_page_bg.png -------------------------------------------------------------------------------- /assets/3.0x/home_movie_banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/3.0x/home_movie_banner.png -------------------------------------------------------------------------------- /assets/3.0x/home_page_icon_gonggao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/3.0x/home_page_icon_gonggao.png -------------------------------------------------------------------------------- /assets/3.0x/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/3.0x/logo.png -------------------------------------------------------------------------------- /assets/3.0x/main_community_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/3.0x/main_community_normal.png -------------------------------------------------------------------------------- /assets/3.0x/main_community_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/3.0x/main_community_select.png -------------------------------------------------------------------------------- /assets/3.0x/main_home_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/3.0x/main_home_normal.png -------------------------------------------------------------------------------- /assets/3.0x/main_home_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/3.0x/main_home_select.png -------------------------------------------------------------------------------- /assets/3.0x/main_my_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/3.0x/main_my_normal.png -------------------------------------------------------------------------------- /assets/3.0x/main_my_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/3.0x/main_my_select.png -------------------------------------------------------------------------------- /assets/3.0x/main_store_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/3.0x/main_store_normal.png -------------------------------------------------------------------------------- /assets/3.0x/main_store_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/3.0x/main_store_select.png -------------------------------------------------------------------------------- /assets/3.0x/movie_cinema_icon_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/3.0x/movie_cinema_icon_normal.png -------------------------------------------------------------------------------- /assets/3.0x/movie_cinema_icon_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/3.0x/movie_cinema_icon_select.png -------------------------------------------------------------------------------- /assets/3.0x/movie_movie_icon_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/3.0x/movie_movie_icon_normal.png -------------------------------------------------------------------------------- /assets/3.0x/movie_movie_icon_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/3.0x/movie_movie_icon_select.png -------------------------------------------------------------------------------- /assets/3.0x/qq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/3.0x/qq.png -------------------------------------------------------------------------------- /assets/3.0x/qq_zone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/3.0x/qq_zone.png -------------------------------------------------------------------------------- /assets/3.0x/signin_page_banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/3.0x/signin_page_banner.png -------------------------------------------------------------------------------- /assets/3.0x/signin_page_sign_item_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/3.0x/signin_page_sign_item_bg.png -------------------------------------------------------------------------------- /assets/3.0x/signin_page_sign_success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/3.0x/signin_page_sign_success.png -------------------------------------------------------------------------------- /assets/3.0x/splash_text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/3.0x/splash_text.png -------------------------------------------------------------------------------- /assets/3.0x/update_page_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/3.0x/update_page_bg.png -------------------------------------------------------------------------------- /assets/3.0x/update_page_cancle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/3.0x/update_page_cancle.png -------------------------------------------------------------------------------- /assets/3.0x/wechat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/3.0x/wechat.png -------------------------------------------------------------------------------- /assets/3.0x/wechat_time_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/3.0x/wechat_time_line.png -------------------------------------------------------------------------------- /assets/account_page_no_login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/account_page_no_login.png -------------------------------------------------------------------------------- /assets/adoption_age.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/adoption_age.png -------------------------------------------------------------------------------- /assets/adoption_expelling_parasite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/adoption_expelling_parasite.png -------------------------------------------------------------------------------- /assets/adoption_immune.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/adoption_immune.png -------------------------------------------------------------------------------- /assets/adoption_immune_sex_m.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/adoption_immune_sex_m.png -------------------------------------------------------------------------------- /assets/adoption_immune_sex_w.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/adoption_immune_sex_w.png -------------------------------------------------------------------------------- /assets/dynamic_message.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/dynamic_message.png -------------------------------------------------------------------------------- /assets/home_page_adopt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/home_page_adopt.png -------------------------------------------------------------------------------- /assets/home_page_cat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/home_page_cat.png -------------------------------------------------------------------------------- /assets/home_page_doctor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/home_page_doctor.png -------------------------------------------------------------------------------- /assets/home_page_dog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/home_page_dog.png -------------------------------------------------------------------------------- /assets/home_page_love.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/home_page_love.png -------------------------------------------------------------------------------- /assets/home_page_qa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/home_page_qa.png -------------------------------------------------------------------------------- /assets/home_page_recipe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/home_page_recipe.png -------------------------------------------------------------------------------- /assets/home_page_sign.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/home_page_sign.png -------------------------------------------------------------------------------- /assets/invite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/invite.png -------------------------------------------------------------------------------- /assets/splash_page_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/assets/splash_page_bg.png -------------------------------------------------------------------------------- /build_android_script.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | flutter clean 3 | flutter build apk --target-platform android-arm --split-per-abi 4 | mv build/app/outputs/apk/release/app-armeabi-v7a-release.apk build/app/outputs/apk/release/宠窝cw.apk 5 | open build/app/outputs/apk/release/ -------------------------------------------------------------------------------- /ios.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | flutter clean 3 | flutter build ios --release -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/xcuserdata/zhangruiyu.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Runner.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /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 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcuserdata/zhangruiyu.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner.xcworkspace/xcuserdata/zhangruiyu.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcuserdata/zhangruiyu.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 9 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : FlutterAppDelegate 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-1024.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-20-ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-20-ipad.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-20@2x-ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-20@2x-ipad.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-29-ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-29-ipad.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-29.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-29@2x-ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-29@2x-ipad.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-40.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-50.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-50@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-57.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-57@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-57@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-72.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-72@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-72@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-76.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /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/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/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/Assets.xcassets/login_bt.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "login_bt@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "login_bt@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/login_bt.imageset/login_bt@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner/Assets.xcassets/login_bt.imageset/login_bt@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/login_bt.imageset/login_bt@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner/Assets.xcassets/login_bt.imageset/login_bt@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/logo.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "logo@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "logo@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/logo.imageset/logo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner/Assets.xcassets/logo.imageset/logo@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/logo.imageset/logo@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner/Assets.xcassets/logo.imageset/logo@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/shanyan_close.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "shanyan_close@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "shanyan_close@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/shanyan_close.imageset/shanyan_close@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner/Assets.xcassets/shanyan_close.imageset/shanyan_close@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/shanyan_close.imageset/shanyan_close@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/ios/Runner/Assets.xcassets/shanyan_close.imageset/shanyan_close@3x.png -------------------------------------------------------------------------------- /ios/Runner/GeneratedPluginRegistrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | #ifndef GeneratedPluginRegistrant_h 6 | #define GeneratedPluginRegistrant_h 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface GeneratedPluginRegistrant : NSObject 13 | + (void)registerWithRegistry:(NSObject*)registry; 14 | @end 15 | 16 | NS_ASSUME_NONNULL_END 17 | #endif /* GeneratedPluginRegistrant_h */ 18 | -------------------------------------------------------------------------------- /ios/Runner/Runner.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | aps-environment 6 | development 7 | com.apple.developer.associated-domains 8 | 9 | applinks:www.keleyuanyuan.xyz 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /ios/Runner/apple-app-site-association: -------------------------------------------------------------------------------- 1 | { 2 | "applinks":{ 3 | "apps":[ 4 | 5 | ], 6 | "details":[ 7 | { 8 | "paths":["*"], 9 | "appID":"94XA4357U9.com.chongmeng.chongwo" 10 | } 11 | ] 12 | } 13 | } -------------------------------------------------------------------------------- /ios/Runner/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char* argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /ios/Runner/zh-Hans.lproj/LaunchScreen.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /ios/Runner/zh-Hans.lproj/Main.strings: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /ios/ServiceDefinitions.json: -------------------------------------------------------------------------------- 1 | {"services":[]} -------------------------------------------------------------------------------- /lib/components/community_user_head/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum CommunityUserHeadAction { action } 4 | 5 | class CommunityUserHeadActionCreator { 6 | static Action onAction() { 7 | return const Action(CommunityUserHeadAction.action); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lib/components/community_user_head/component.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class CommunityUserHeadComponent extends Component { 9 | CommunityUserHeadComponent() 10 | : super( 11 | effect: buildEffect(), 12 | reducer: buildReducer(), 13 | view: buildView, 14 | dependencies: Dependencies( 15 | adapter: null, 16 | slots: >{ 17 | }),); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /lib/components/community_user_head/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'action.dart'; 3 | import 'state.dart'; 4 | 5 | Effect buildEffect() { 6 | return combineEffects(>{ 7 | CommunityUserHeadAction.action: _onAction, 8 | }); 9 | } 10 | 11 | void _onAction(Action action, Context ctx) { 12 | } 13 | -------------------------------------------------------------------------------- /lib/components/community_user_head/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | CommunityUserHeadAction.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | CommunityUserHeadState _onAction(CommunityUserHeadState state, Action action) { 15 | final CommunityUserHeadState newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/components/dynamic/adapter/item_dynamic_adapter_component/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | //TODO replace with your own action 4 | enum ItemDynamicAdapterAction { action } 5 | 6 | class ItemDynamicAdapterActionCreator { 7 | static Action onAction() { 8 | return const Action(ItemDynamicAdapterAction.action); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /lib/components/dynamic/adapter/item_dynamic_adapter_component/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'action.dart'; 3 | import 'state.dart'; 4 | 5 | Effect buildEffect() { 6 | return combineEffects(>{ 7 | ItemDynamicAdapterAction.action: _onAction, 8 | }); 9 | } 10 | 11 | void _onAction(Action action, Context ctx) { 12 | } 13 | -------------------------------------------------------------------------------- /lib/components/dynamic/adapter/item_dynamic_adapter_component/item_dynamic_content_adapter/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/function/main/community/model/dynamic_list_entity.dart'; 2 | import 'package:fish_redux/fish_redux.dart'; 3 | 4 | class ItemDynamicContentState implements Cloneable { 5 | List itemTabData; 6 | 7 | @override 8 | ItemDynamicContentState clone() { 9 | return ItemDynamicContentState()..itemTabData = itemTabData; 10 | } 11 | } 12 | 13 | ItemDynamicContentState initState(Map args) { 14 | return ItemDynamicContentState(); 15 | } 16 | -------------------------------------------------------------------------------- /lib/components/dynamic/adapter/item_dynamic_adapter_component/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | ItemDynamicAdapterAction.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | ItemDynamicAdapterState _onAction(ItemDynamicAdapterState state, Action action) { 15 | final ItemDynamicAdapterState newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/components/dynamic/adapter/item_dynamic_adapter_component/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/function/main/community/model/dynamic_list_entity.dart'; 2 | import 'package:fish_redux/fish_redux.dart'; 3 | 4 | class ItemDynamicAdapterState implements Cloneable { 5 | List data; 6 | 7 | ItemDynamicAdapterState({this.data}); 8 | 9 | @override 10 | ItemDynamicAdapterState clone() { 11 | return ItemDynamicAdapterState()..data = data; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lib/components/dynamic/adapter/item_dynamic_adapter_component/view.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | import 'action.dart'; 5 | import 'state.dart'; 6 | 7 | Widget buildView( 8 | ItemDynamicAdapterState state, Dispatch dispatch, ViewService viewService) { 9 | var buildAdapter = viewService.buildAdapter(); 10 | return SliverList( 11 | delegate: SliverChildBuilderDelegate(buildAdapter.itemBuilder, 12 | childCount: buildAdapter.itemCount), 13 | ); 14 | } 15 | -------------------------------------------------------------------------------- /lib/components/dynamic/adapter/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/function/main/community/model/dynamic_list_entity.dart'; 2 | import 'package:chongmeng/function/user_details/state.dart'; 3 | import 'package:fish_redux/fish_redux.dart'; 4 | 5 | class UserDetailsDynamicState implements Cloneable { 6 | List> tabData; 7 | 8 | @override 9 | UserDetailsDynamicState clone() { 10 | return UserDetailsDynamicState()..tabData = tabData; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/components/dynamic/dynamic_component/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/global_store/store.dart'; 2 | import 'package:fish_redux/fish_redux.dart'; 3 | 4 | import 'action.dart'; 5 | import 'state.dart'; 6 | 7 | Reducer buildReducer() { 8 | return asReducer( 9 | >{ 10 | DynamicItemAction.ResetLiked: _onResetLiked, 11 | }, 12 | ); 13 | } 14 | 15 | DynamicItemState _onResetLiked(DynamicItemState state, Action action) { 16 | if (state.data.id == action.payload['dynamic_id']) { 17 | final DynamicItemState newState = state.clone(); 18 | newState.data.liked = action.payload['liked']; 19 | return newState; 20 | } else { 21 | return state; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /lib/components/dynamic/dynamic_component/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/function/main/community/model/dynamic_list_entity.dart'; 2 | import 'package:fish_redux/fish_redux.dart'; 3 | 4 | class DynamicItemState implements Cloneable { 5 | DynamicListData data; 6 | 7 | @override 8 | DynamicItemState clone() { 9 | return DynamicItemState()..data = data; 10 | } 11 | 12 | DynamicItemState({this.data}); 13 | } 14 | -------------------------------------------------------------------------------- /lib/components/dynamic/model/item_page_data.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/function/main/community/model/dynamic_list_entity.dart'; 2 | import 'package:flutter_easyrefresh/easy_refresh.dart'; 3 | 4 | class ItemPageData { 5 | String name; 6 | String filtrateType; 7 | int pageIndex; 8 | EasyRefreshController easyRefreshController; 9 | List data; 10 | 11 | ItemPageData( 12 | {this.name, 13 | this.filtrateType, 14 | this.data, 15 | this.pageIndex, 16 | this.easyRefreshController}); 17 | } 18 | -------------------------------------------------------------------------------- /lib/components/notice/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | //TODO replace with your own action 4 | enum NoticeAction { action } 5 | 6 | class NoticeActionCreator { 7 | static Action onAction() { 8 | return const Action(NoticeAction.action); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /lib/components/notice/component.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class NoticeComponent extends Component { 9 | NoticeComponent() 10 | : super( 11 | effect: buildEffect(), 12 | reducer: buildReducer(), 13 | view: buildView, 14 | dependencies: Dependencies( 15 | adapter: null, 16 | slots: >{ 17 | }),); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /lib/components/notice/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'action.dart'; 3 | import 'state.dart'; 4 | 5 | Effect buildEffect() { 6 | return combineEffects(>{ 7 | NoticeAction.action: _onAction, 8 | }); 9 | } 10 | 11 | void _onAction(Action action, Context ctx) { 12 | } 13 | -------------------------------------------------------------------------------- /lib/components/notice/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | NoticeAction.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | NoticeState _onAction(NoticeState state, Action action) { 15 | final NoticeState newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/components/notice/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | class NoticeState implements Cloneable { 4 | List itemData; 5 | 6 | NoticeState({this.itemData}); 7 | 8 | @override 9 | NoticeState clone() { 10 | return NoticeState()..itemData = itemData; 11 | } 12 | } 13 | 14 | NoticeState initState(Map args) { 15 | return NoticeState(); 16 | } 17 | -------------------------------------------------------------------------------- /lib/components/product/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum AliItemProductAction { action, SkipProductDetailsPage } 4 | 5 | class AliItemProductActionCreator { 6 | static Action onAction() { 7 | return const Action(AliItemProductAction.action); 8 | } 9 | 10 | static Action onSkipProductDetailsPage() { 11 | return const Action(AliItemProductAction.SkipProductDetailsPage); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lib/components/product/component.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/function/main/home/model/ali_product_item.dart'; 2 | import 'package:fish_redux/fish_redux.dart'; 3 | 4 | import 'effect.dart'; 5 | import 'reducer.dart'; 6 | import 'view.dart'; 7 | 8 | class AliItemProductComponent extends Component { 9 | AliItemProductComponent() 10 | : super( 11 | effect: buildEffect(), 12 | reducer: buildReducer(), 13 | view: buildView, 14 | dependencies: Dependencies( 15 | adapter: null, slots: >{}), 16 | ); 17 | } 18 | -------------------------------------------------------------------------------- /lib/components/product/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/function/main/home/model/ali_product_item.dart'; 2 | import 'package:chongmeng/helper/navigator_helper.dart'; 3 | import 'package:chongmeng/routes.dart'; 4 | import 'package:fish_redux/fish_redux.dart'; 5 | import 'package:flutter/material.dart' hide Action; 6 | 7 | import 'action.dart'; 8 | 9 | Effect buildEffect() { 10 | return combineEffects(>{ 11 | AliItemProductAction.SkipProductDetailsPage: _onSkipProductDetailsPage, 12 | }); 13 | } 14 | 15 | void _onSkipProductDetailsPage(Action action, Context ctx) { 16 | Navigator.pushNamed(ctx.context, PageConstants.ProductDetailsPage, 17 | arguments: {"data": ctx.state}); 18 | } 19 | -------------------------------------------------------------------------------- /lib/components/product/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/function/main/home/model/ali_product_item.dart'; 2 | import 'package:fish_redux/fish_redux.dart'; 3 | 4 | import 'action.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | // AliItemProductAction.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | //AliProductItem _onAction(AliProductItem state, Action action) { 15 | // final AliProductItem newState = state.clone(); 16 | // return newState; 17 | //} 18 | -------------------------------------------------------------------------------- /lib/constants/constants.dart: -------------------------------------------------------------------------------- 1 | export 'package:chongmeng/constants/text_style.dart'; 2 | export 'package:chongmeng/constants/colors.dart'; 3 | export 'package:chongmeng/constants/http_constants.dart'; 4 | export 'package:chongmeng/widget/vertical_line.dart'; 5 | export 'package:chongmeng/localizetion/default_localization.dart'; 6 | export 'package:chongmeng/utils/completer_utils.dart'; 7 | export 'package:chongmeng/ext/context_ext.dart'; 8 | export 'package:oktoast/oktoast.dart'; 9 | 10 | const int DynamicPageSize = 8; 11 | const String WXKey = "wxe2cabfecd003404b"; 12 | const bool isRelease = false; 13 | const bool isOnline = false; 14 | -------------------------------------------------------------------------------- /lib/constants/send_code_type.dart: -------------------------------------------------------------------------------- 1 | class SendCodeType { 2 | //(0->注册,1->忘记密码,2->手机+验证码登陆) 3 | static const String Register = "0"; 4 | static const String ForgetPwd = "1"; 5 | static const String LoginCode = "2"; 6 | } 7 | -------------------------------------------------------------------------------- /lib/constants/text_style.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart' hide Action; 2 | 3 | import 'constants.dart'; 4 | 5 | const TextStyle fff_18 = TextStyle(color: colorWhite, fontSize: 18.0); 6 | const TextStyle fff_15 = TextStyle(color: colorWhite, fontSize: 15.0); 7 | -------------------------------------------------------------------------------- /lib/ext/context_ext.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | extension NavigatorBuildContext on BuildContext { 4 | void pop([T result]) { 5 | Navigator.pop(this, result); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /lib/function/adoption/adoption_add/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class AdoptionAddPage extends Page> { 9 | AdoptionAddPage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/adoption/details/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum AdoptionDetailsAction { ShowAdoptionDialog } 4 | 5 | class AdoptionDetailsActionCreator { 6 | static Action onShowAdoptionDialog() { 7 | return const Action(AdoptionDetailsAction.ShowAdoptionDialog); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lib/function/adoption/details/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/helper/navigator_helper.dart'; 2 | import 'package:fish_redux/fish_redux.dart'; 3 | 4 | import 'action.dart'; 5 | import 'state.dart'; 6 | 7 | Effect buildEffect() { 8 | return combineEffects(>{ 9 | AdoptionDetailsAction.ShowAdoptionDialog: _onShowAdoptionDialog, 10 | }); 11 | } 12 | 13 | Future _onShowAdoptionDialog( 14 | Action action, Context ctx) async { 15 | NavigatorHelper.skipConversationItemPageByUserId( 16 | ctx.context, ctx.state.data.userId); 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/adoption/details/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | // AdoptionDetailsAction.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | AdoptionDetailsState _onAction(AdoptionDetailsState state, Action action) { 15 | final AdoptionDetailsState newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/adoption/details/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/function/main/adoption/model/adoption_entity.dart'; 2 | import 'package:fish_redux/fish_redux.dart'; 3 | 4 | class AdoptionDetailsState implements Cloneable { 5 | AdoptionDataAdoption data; 6 | 7 | @override 8 | AdoptionDetailsState clone() { 9 | return AdoptionDetailsState()..data = data; 10 | } 11 | } 12 | 13 | AdoptionDetailsState initState(Map args) { 14 | return AdoptionDetailsState()..data = args['data']; 15 | } 16 | -------------------------------------------------------------------------------- /lib/function/adoption/my_adoption/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class MyAdoptionPage extends Page> { 9 | MyAdoptionPage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/adoption/my_adoption/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | MyAdoptionAction.ResetData: _onResetData, 10 | }, 11 | ); 12 | } 13 | 14 | MyAdoptionState _onResetData(MyAdoptionState state, Action action) { 15 | final MyAdoptionState newState = state.clone()..data = action.payload; 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/adoption/my_adoption/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'model/my_adoption_entity.dart'; 4 | 5 | class MyAdoptionState implements Cloneable { 6 | MyAdoptionData data; 7 | 8 | @override 9 | MyAdoptionState clone() { 10 | return MyAdoptionState()..data = data; 11 | } 12 | 13 | static final publishing = 0; // 发布中 14 | static final finish = 10; // 已被领养 15 | static final soldOut = 20; //下架 16 | } 17 | 18 | MyAdoptionState initState(Map args) { 19 | return MyAdoptionState(); 20 | } 21 | -------------------------------------------------------------------------------- /lib/function/app_info/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum AppInfoAction { action } 4 | 5 | class AppInfoActionCreator { 6 | static Action onAction() { 7 | return const Action(AppInfoAction.action); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lib/function/app_info/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'action.dart'; 3 | import 'state.dart'; 4 | 5 | Effect buildEffect() { 6 | return combineEffects(>{ 7 | Lifecycle.initState: _initState, 8 | }); 9 | } 10 | 11 | void _initState(Action action, Context ctx) {} 12 | -------------------------------------------------------------------------------- /lib/function/app_info/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class AppInfoPage extends Page> { 9 | AppInfoPage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/app_info/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | AppInfoAction.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | AppInfoState _onAction(AppInfoState state, Action action) { 15 | final AppInfoState newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/app_info/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | class AppInfoState implements Cloneable { 4 | Map data; 5 | 6 | @override 7 | AppInfoState clone() { 8 | return AppInfoState()..data = data; 9 | } 10 | } 11 | 12 | AppInfoState initState(Map args) { 13 | return AppInfoState()..data = args; 14 | } 15 | -------------------------------------------------------------------------------- /lib/function/auto/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum AutoAction { CheckOK, SendAutoCode, Login } 4 | 5 | class AutoActionCreator { 6 | static Action onCheckOK(bool isOK) { 7 | return Action(AutoAction.CheckOK, payload: isOK); 8 | } 9 | 10 | static Action onSendAutoCode(Map map) { 11 | return Action(AutoAction.SendAutoCode, payload: map); 12 | } 13 | 14 | static Action onLogin(String type) { 15 | return Action(AutoAction.Login, payload: type); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/auto/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class AutoPage extends Page> { 9 | AutoPage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, slots: >{}), 17 | middleware: >[], 18 | ); 19 | } 20 | -------------------------------------------------------------------------------- /lib/function/auto/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | AutoAction.CheckOK: _onCheckOK, 10 | }, 11 | ); 12 | } 13 | 14 | AutoState _onCheckOK(AutoState state, Action action) { 15 | final AutoState newState = state.clone()..isCheckOK = action.payload; 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/bindtel/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum BindTelAction { SendAutoCode, Login, CheckOK } 4 | 5 | class BindTelActionCreator { 6 | static Action onSendAutoCode(map) { 7 | return Action(BindTelAction.SendAutoCode, payload: map); 8 | } 9 | 10 | static Action onLogin() { 11 | return Action(BindTelAction.Login); 12 | } 13 | 14 | static Action onCheckOK(bool param) { 15 | return Action(BindTelAction.CheckOK, payload: param); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/bindtel/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class BindTelPage extends Page> { 9 | BindTelPage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/bindtel/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | BindTelAction.CheckOK: _onCheckOK, 10 | }, 11 | ); 12 | } 13 | 14 | BindTelState _onCheckOK(BindTelState state, Action action) { 15 | final BindTelState newState = state.clone()..isCheckOK = action.payload; 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/complain/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | //TODO replace with your own action 4 | enum ComplainAction { action, ChangePosition } 5 | 6 | class ComplainActionCreator { 7 | static Action onAction() { 8 | return const Action(ComplainAction.action); 9 | } 10 | 11 | static Action onChangePosition(int index) { 12 | return Action(ComplainAction.ChangePosition, payload: index); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /lib/function/complain/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'action.dart'; 3 | import 'state.dart'; 4 | 5 | Effect buildEffect() { 6 | return combineEffects(>{ 7 | ComplainAction.action: _onAction, 8 | }); 9 | } 10 | 11 | void _onAction(Action action, Context ctx) { 12 | } 13 | -------------------------------------------------------------------------------- /lib/function/complain/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class ComplainPage extends Page> { 9 | ComplainPage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/complain/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | ComplainAction.ChangePosition: _onChangePosition, 10 | }, 11 | ); 12 | } 13 | 14 | ComplainState _onChangePosition(ComplainState state, Action action) { 15 | final ComplainState newState = state.clone()..selectPosition = action.payload; 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/complain/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | class ComplainState implements Cloneable { 4 | int selectPosition; 5 | 6 | @override 7 | ComplainState clone() { 8 | return ComplainState()..selectPosition; 9 | } 10 | } 11 | 12 | ComplainState initState(Map args) { 13 | return ComplainState()..selectPosition = 0; 14 | } 15 | -------------------------------------------------------------------------------- /lib/function/conversation/item/adapter/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | //TODO replace with your own action 4 | enum MessageBodyAction { action } 5 | 6 | class MessageBodyActionCreator { 7 | static Action onAction() { 8 | return const Action(MessageBodyAction.action); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /lib/function/conversation/item/adapter/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import '../state.dart'; 3 | import 'action.dart'; 4 | 5 | Effect buildEffect() { 6 | return combineEffects(>{ 7 | MessageBodyAction.action: _onAction, 8 | }); 9 | } 10 | 11 | void _onAction(Action action, Context ctx) {} 12 | -------------------------------------------------------------------------------- /lib/function/conversation/item/adapter/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import '../state.dart'; 4 | import 'action.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | MessageBodyAction.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | ConversationItemState _onAction(ConversationItemState state, Action action) { 15 | final ConversationItemState newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/conversation/item/message_body/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | //TODO replace with your own action 4 | enum MessageBodyAction { action } 5 | 6 | class MessageBodyActionCreator { 7 | static Action onAction() { 8 | return const Action(MessageBodyAction.action); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /lib/function/conversation/item/message_body/component.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class MessageBodyComponent extends Component { 9 | MessageBodyComponent() 10 | : super( 11 | effect: buildEffect(), 12 | reducer: buildReducer(), 13 | view: buildView, 14 | dependencies: Dependencies( 15 | adapter: null, 16 | slots: >{ 17 | }),); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /lib/function/conversation/item/message_body/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'action.dart'; 3 | import 'state.dart'; 4 | 5 | Effect buildEffect() { 6 | return combineEffects(>{ 7 | MessageBodyAction.action: _onAction, 8 | }); 9 | } 10 | 11 | void _onAction(Action action, Context ctx) { 12 | } 13 | -------------------------------------------------------------------------------- /lib/function/conversation/item/message_body/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | MessageBodyAction.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | MessageBodyState _onAction(MessageBodyState state, Action action) { 15 | final MessageBodyState newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/conversation/item/message_body/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'package:jmessage_flutter/jmessage_flutter.dart'; 3 | 4 | class MessageBodyState implements Cloneable { 5 | JMNormalMessage itemMessage; 6 | 7 | MessageBodyState({this.itemMessage}); 8 | 9 | @override 10 | MessageBodyState clone() { 11 | return MessageBodyState()..itemMessage = itemMessage; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lib/function/conversation/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class ConversationPage extends Page> { 9 | ConversationPage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/conversation/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | ConversationAction.ReSetConversations: _onReSetConversations, 10 | }, 11 | ); 12 | } 13 | 14 | ConversationState _onReSetConversations( 15 | ConversationState state, Action action) { 16 | final ConversationState newState = state.clone() 17 | ..conversations = action.payload; 18 | return newState; 19 | } 20 | -------------------------------------------------------------------------------- /lib/function/conversation/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'package:jmessage_flutter/jmessage_flutter.dart'; 3 | 4 | class ConversationState implements Cloneable { 5 | List conversations; 6 | 7 | JMMessageEventListener messageEventListener; 8 | 9 | @override 10 | ConversationState clone() { 11 | return ConversationState() 12 | ..conversations = conversations 13 | ..messageEventListener = messageEventListener; 14 | } 15 | } 16 | 17 | ConversationState initState(Map args) { 18 | return ConversationState(); 19 | } 20 | -------------------------------------------------------------------------------- /lib/function/edit_text/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | //TODO replace with your own action 4 | enum EditTextAction { action } 5 | 6 | class EditTextActionCreator { 7 | static Action onAction() { 8 | return const Action(EditTextAction.action); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /lib/function/edit_text/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'action.dart'; 3 | import 'state.dart'; 4 | 5 | Effect buildEffect() { 6 | return combineEffects(>{ 7 | EditTextAction.action: _onAction, 8 | }); 9 | } 10 | 11 | void _onAction(Action action, Context ctx) { 12 | } 13 | -------------------------------------------------------------------------------- /lib/function/edit_text/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class EditTextPage extends Page> { 9 | EditTextPage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/edit_text/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | EditTextAction.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | EditTextState _onAction(EditTextState state, Action action) { 15 | final EditTextState newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/integral/pay_result/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | //TODO replace with your own action 4 | enum PayResultAction { action } 5 | 6 | class PayResultActionCreator { 7 | static Action onAction() { 8 | return const Action(PayResultAction.action); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /lib/function/integral/pay_result/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'action.dart'; 3 | import 'state.dart'; 4 | 5 | Effect buildEffect() { 6 | return combineEffects(>{ 7 | PayResultAction.action: _onAction, 8 | }); 9 | } 10 | 11 | void _onAction(Action action, Context ctx) { 12 | } 13 | -------------------------------------------------------------------------------- /lib/function/integral/pay_result/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class PayResultPage extends Page> { 9 | PayResultPage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/integral/pay_result/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | PayResultAction.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | PayResultState _onAction(PayResultState state, Action action) { 15 | final PayResultState newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/integral/pay_result/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/function/integral/recharge/model/pay_result_entity.dart'; 2 | import 'package:fish_redux/fish_redux.dart'; 3 | 4 | class PayResultState implements Cloneable { 5 | PayResultData data; 6 | 7 | @override 8 | PayResultState clone() { 9 | return PayResultState()..data = data; 10 | } 11 | } 12 | 13 | PayResultState initState(Map args) { 14 | return PayResultState()..data = args['data']; 15 | } 16 | -------------------------------------------------------------------------------- /lib/function/integral/recharge/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum RechargeAction { Pay, ChangeSelectPosition, Refresh, ReSetData } 4 | 5 | class RechargeActionCreator { 6 | static Action onPay() { 7 | return const Action(RechargeAction.Pay); 8 | } 9 | 10 | static Action onChangeSelectPosition(int index) { 11 | return Action(RechargeAction.ChangeSelectPosition, payload: index); 12 | } 13 | 14 | static Action onRefresh(Map map) { 15 | return Action(RechargeAction.Refresh, payload: map); 16 | } 17 | 18 | static Action onReSetData(data) { 19 | return Action(RechargeAction.ReSetData, payload: data); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/function/integral/recharge/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class RechargePage extends Page> { 9 | RechargePage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/integral/record/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class IntegralRecordPage extends Page> { 9 | IntegralRecordPage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/invite/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum InviteAction { ReSetData, Refresh, Share } 4 | 5 | class InviteActionCreator { 6 | static Action onReSetData(p) { 7 | return Action(InviteAction.ReSetData, payload: p); 8 | } 9 | 10 | static Action onRefresh(p) { 11 | return Action(InviteAction.Refresh, payload: p); 12 | } 13 | 14 | static Action onShare() { 15 | return Action(InviteAction.Share); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/invite/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class InvitePage extends Page> { 9 | InvitePage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/invite/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | InviteAction.ReSetData: _onReSetData, 10 | }, 11 | ); 12 | } 13 | 14 | InviteState _onReSetData(InviteState state, Action action) { 15 | final InviteState newState = state.clone()..data = action.payload; 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/invite/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'model/invite_entity.dart'; 4 | 5 | class InviteState implements Cloneable { 6 | InviteData data; 7 | 8 | @override 9 | InviteState clone() { 10 | return InviteState()..data = data; 11 | } 12 | } 13 | 14 | InviteState initState(Map args) { 15 | return InviteState(); 16 | } 17 | -------------------------------------------------------------------------------- /lib/function/main/account/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum AccountAction { ResetUnreadCount, Refresh, ResetData } 4 | 5 | class AccountActionCreator { 6 | static Action onResetUnreadCount(int count) { 7 | return Action(AccountAction.ResetUnreadCount, payload: count); 8 | } 9 | 10 | static Action onRefresh(param) { 11 | return Action(AccountAction.Refresh, payload: param); 12 | } 13 | 14 | static Action onResetData(param) { 15 | return Action(AccountAction.ResetData, payload: param); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/main/account/component.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class AccountComponent extends Component { 9 | AccountComponent() 10 | : super( 11 | effect: buildEffect(), 12 | reducer: buildReducer(), 13 | view: buildView, 14 | dependencies: Dependencies( 15 | adapter: null, 16 | slots: >{ 17 | }),); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /lib/function/main/account/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | AccountAction.ResetUnreadCount: _onResetUnreadCount, 10 | AccountAction.ResetData: _onResetData, 11 | }, 12 | ); 13 | } 14 | 15 | AccountState _onResetUnreadCount(AccountState state, Action action) { 16 | final AccountState newState = state.clone()..allUnreadCount = action.payload; 17 | return newState; 18 | } 19 | 20 | AccountState _onResetData(AccountState state, Action action) { 21 | final AccountState newState = state.clone()..data = action.payload; 22 | return newState; 23 | } 24 | -------------------------------------------------------------------------------- /lib/function/main/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum MainAction { ChangeNewPage, SkipSelectTalkTypePage, RefreshHome } 4 | 5 | class MainActionCreator { 6 | static Action onChangeNewPage(int index) { 7 | return Action(MainAction.ChangeNewPage, payload: index); 8 | } 9 | 10 | static Action onSkipSelectTalkTypePage() { 11 | return Action( 12 | MainAction.SkipSelectTalkTypePage, 13 | ); 14 | } 15 | 16 | static Action onRefreshHome() { 17 | return Action( 18 | MainAction.RefreshHome, 19 | ); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/function/main/adoption/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'model/adoption_entity.dart'; 4 | 5 | enum AdoptionAction { ResetData, Refresh, SkipDetailsPage } 6 | 7 | class AdoptionActionCreator { 8 | static Action onRefresh(Map map) { 9 | return Action(AdoptionAction.Refresh, payload: map); 10 | } 11 | 12 | static Action onSkipDetailsPage(AdoptionDataAdoption data) { 13 | return Action(AdoptionAction.SkipDetailsPage, payload: data); 14 | } 15 | 16 | static Action onResetData(AdoptionData data) { 17 | return Action(AdoptionAction.ResetData, payload: data); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /lib/function/main/adoption/component.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class AdoptionComponent extends Component { 9 | AdoptionComponent() 10 | : super( 11 | effect: buildEffect(), 12 | reducer: buildReducer(), 13 | view: buildView, 14 | dependencies: Dependencies( 15 | adapter: null, 16 | slots: >{ 17 | }),); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /lib/function/main/adoption/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | AdoptionAction.ResetData: _onResetData, 10 | }, 11 | ); 12 | } 13 | 14 | AdoptionState _onResetData(AdoptionState state, Action action) { 15 | final AdoptionState newState = state.clone()..data = action.payload; 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/main/adoption/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'model/adoption_entity.dart'; 4 | 5 | class AdoptionState implements Cloneable { 6 | AdoptionData data; 7 | 8 | @override 9 | AdoptionState clone() { 10 | return AdoptionState()..data = data; 11 | } 12 | 13 | static AdoptionState initState(Map args) { 14 | return AdoptionState(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /lib/function/main/community/commit_media/model/item_bin.dart: -------------------------------------------------------------------------------- 1 | import 'package:dragablegridview_flutter/dragablegridviewbin.dart'; 2 | -------------------------------------------------------------------------------- /lib/function/main/community/commit_media/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class CommitMediaPage extends Page> { 9 | CommitMediaPage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/main/community/commit_media/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | CommitMediaAction.ChangeSelectPic: _onChangeSelectPic, 10 | }, 11 | ); 12 | } 13 | 14 | CommitMediaState _onChangeSelectPic(CommitMediaState state, Action action) { 15 | final CommitMediaState newState = state.clone()..picFilePath = action.payload; 16 | 17 | return newState; 18 | } 19 | -------------------------------------------------------------------------------- /lib/function/main/community/commit_text/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum CommitTextAction { UploadCommit } 4 | 5 | class CommitTextActionCreator { 6 | static Action onUploadCommit() { 7 | return const Action(CommitTextAction.UploadCommit); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lib/function/main/community/commit_text/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class CommitTextPage extends Page> { 9 | CommitTextPage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/main/community/commit_text/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | // CommitTextAction.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | CommitTextState _onAction(CommitTextState state, Action action) { 15 | final CommitTextState newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/main/community/commit_text/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | class CommitTextState implements Cloneable { 5 | TextEditingController contentTextEditingController; 6 | 7 | @override 8 | CommitTextState clone() { 9 | return CommitTextState() 10 | ..contentTextEditingController = contentTextEditingController; 11 | } 12 | } 13 | 14 | CommitTextState initState(Map args) { 15 | return CommitTextState() 16 | ..contentTextEditingController = TextEditingController(); 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/main/community/details/adapter/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | //TODO replace with your own action 4 | enum ReplyListAction { action } 5 | 6 | class ReplyListActionCreator { 7 | static Action onAction() { 8 | return const Action(ReplyListAction.action); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /lib/function/main/community/details/adapter/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'action.dart'; 3 | import 'state.dart'; 4 | 5 | Effect buildEffect() { 6 | return combineEffects(>{ 7 | ReplyListAction.action: _onAction, 8 | }); 9 | } 10 | 11 | void _onAction(Action action, Context ctx) { 12 | } 13 | -------------------------------------------------------------------------------- /lib/function/main/community/details/adapter/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | ReplyListAction.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | ReplyListState _onAction(ReplyListState state, Action action) { 15 | final ReplyListState newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/main/community/details/adapter/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/function/main/community/details/model/comment_entity.dart'; 2 | import 'package:fish_redux/fish_redux.dart'; 3 | 4 | class ReplyListState implements Cloneable { 5 | List data; 6 | 7 | @override 8 | ReplyListState clone() { 9 | return ReplyListState()..data = data; 10 | } 11 | } 12 | 13 | ReplyListState initState(Map args) { 14 | return ReplyListState(); 15 | } 16 | -------------------------------------------------------------------------------- /lib/function/main/community/details/adapter/view.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | import 'action.dart'; 5 | import 'state.dart'; 6 | 7 | Widget buildView(ReplyListState state, Dispatch dispatch, ViewService viewService) { 8 | return Container(); 9 | } 10 | -------------------------------------------------------------------------------- /lib/function/main/community/details/reply_component/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum ReplyAction { action, SkipReviewImagePage } 4 | 5 | class ReplyActionCreator { 6 | static Action onAction() { 7 | return const Action(ReplyAction.action); 8 | } 9 | 10 | static Action onSkipReviewImagePage(String image) { 11 | return Action(ReplyAction.SkipReviewImagePage, payload: image); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lib/function/main/community/details/reply_component/component.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/components/community_user_head/component.dart'; 2 | import 'package:chongmeng/components/community_user_head/state.dart'; 3 | import 'package:fish_redux/fish_redux.dart'; 4 | 5 | import 'effect.dart'; 6 | import 'reducer.dart'; 7 | import 'state.dart'; 8 | import 'view.dart'; 9 | 10 | class ReplyComponent extends Component { 11 | ReplyComponent() 12 | : super( 13 | effect: buildEffect(), 14 | reducer: buildReducer(), 15 | view: buildView, 16 | dependencies: Dependencies( 17 | adapter: null, slots: >{}), 18 | ); 19 | } 20 | -------------------------------------------------------------------------------- /lib/function/main/community/details/reply_component/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/routes.dart'; 2 | import 'package:fish_redux/fish_redux.dart'; 3 | import 'package:flutter/material.dart' hide Action; 4 | import 'action.dart'; 5 | import 'state.dart'; 6 | 7 | Effect buildEffect() { 8 | return combineEffects(>{ 9 | ReplyAction.SkipReviewImagePage: _onSkipReviewImagePage, 10 | }); 11 | } 12 | 13 | void _onSkipReviewImagePage(Action action, Context ctx) { 14 | Navigator.pushNamed(ctx.context, PageConstants.ReviewImagePage, arguments: { 15 | "images": [action.payload], 16 | "index": 0 17 | }); 18 | } 19 | -------------------------------------------------------------------------------- /lib/function/main/community/details/reply_component/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | ReplyAction.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | ReplyState _onAction(ReplyState state, Action action) { 15 | final ReplyState newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/main/community/details/reply_component/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/function/main/community/details/model/comment_entity.dart'; 2 | import 'package:fish_redux/fish_redux.dart'; 3 | 4 | class ReplyState implements Cloneable { 5 | CommentData data; 6 | 7 | ReplyState({this.data}); 8 | 9 | @override 10 | ReplyState clone() { 11 | return ReplyState()..data = data; 12 | } 13 | } 14 | 15 | ReplyState initState(Map args) { 16 | return ReplyState(); 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/main/community/selecttalktype/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum SelectTalkTypeAction { SkipPage } 4 | 5 | class SelectTalkTypeActionCreator { 6 | static Action onSkipPage(String type) { 7 | return Action(SelectTalkTypeAction.SkipPage, payload: type); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lib/function/main/community/selecttalktype/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'state.dart'; 5 | import 'view.dart'; 6 | 7 | class SelectTalkTypePage 8 | extends Page> { 9 | SelectTalkTypePage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | view: buildView, 14 | dependencies: Dependencies( 15 | adapter: null, slots: >{}), 16 | middleware: >[], 17 | ); 18 | } 19 | -------------------------------------------------------------------------------- /lib/function/main/community/selecttalktype/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | class SelectTalkTypeState implements Cloneable { 4 | 5 | @override 6 | SelectTalkTypeState clone() { 7 | return SelectTalkTypeState(); 8 | } 9 | } 10 | 11 | SelectTalkTypeState initState(Map args) { 12 | return SelectTalkTypeState(); 13 | } 14 | -------------------------------------------------------------------------------- /lib/function/main/home/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum HomeAction { Refresh, SetHomeData } 4 | 5 | class HomeActionCreator { 6 | static Action onRefresh(data) { 7 | return Action(HomeAction.Refresh, payload: data); 8 | } 9 | 10 | static Action onSetHomeData(data) { 11 | return Action(HomeAction.SetHomeData, payload: data); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lib/function/main/home/adapter/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | //TODO replace with your own action 4 | enum HomeListAction { action } 5 | 6 | class HomeListActionCreator { 7 | static Action onAction() { 8 | return const Action(HomeListAction.action); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /lib/function/main/home/adapter/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'action.dart'; 3 | import 'state.dart'; 4 | 5 | Effect buildEffect() { 6 | return combineEffects(>{ 7 | HomeListAction.action: _onAction, 8 | }); 9 | } 10 | 11 | void _onAction(Action action, Context ctx) { 12 | } 13 | -------------------------------------------------------------------------------- /lib/function/main/home/adapter/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | HomeListAction.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | HomeListState _onAction(HomeListState state, Action action) { 15 | final HomeListState newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/main/home/adapter/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/function/main/home/model/ali_product_item.dart'; 2 | import 'package:fish_redux/fish_redux.dart'; 3 | 4 | class HomeListState implements Cloneable { 5 | List data; 6 | 7 | @override 8 | HomeListState clone() { 9 | return HomeListState()..data; 10 | } 11 | } 12 | 13 | HomeListState initState(Map args) { 14 | return HomeListState(); 15 | } 16 | -------------------------------------------------------------------------------- /lib/function/main/home/adapter/view.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | import 'action.dart'; 5 | import 'state.dart'; 6 | 7 | Widget buildView(HomeListState state, Dispatch dispatch, ViewService viewService) { 8 | return Container(); 9 | } 10 | -------------------------------------------------------------------------------- /lib/function/main/home/banner/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum BannerAction { SkipWebViewPage } 4 | 5 | class BannerActionCreator { 6 | static Action onSkipWebViewPage(data) { 7 | return Action(BannerAction.SkipWebViewPage, payload: data); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lib/function/main/home/banner/component.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'state.dart'; 5 | import 'view.dart'; 6 | 7 | class BannerComponent extends Component { 8 | BannerComponent() 9 | : super( 10 | effect: buildEffect(), 11 | view: buildView, 12 | dependencies: Dependencies( 13 | adapter: null, slots: >{}), 14 | ); 15 | } 16 | -------------------------------------------------------------------------------- /lib/function/main/home/banner/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/function/main/home/model/ali_product_item.dart'; 2 | import 'package:chongmeng/function/main/home/model/home_entity.dart'; 3 | import 'package:fish_redux/fish_redux.dart'; 4 | 5 | class BannerState implements Cloneable { 6 | List bannerData; 7 | 8 | @override 9 | BannerState clone() { 10 | return BannerState(); 11 | } 12 | } 13 | 14 | BannerState initState(Map args) { 15 | return BannerState(); 16 | } 17 | -------------------------------------------------------------------------------- /lib/function/main/home/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | HomeAction.SetHomeData: _onSetHomeData, 10 | }, 11 | ); 12 | } 13 | 14 | HomeState _onSetHomeData(HomeState state, Action action) { 15 | final HomeState newState = state.clone()..homeData = action.payload; 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/main/home/tab/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | //TODO replace with your own action 4 | enum TabAction { action } 5 | 6 | class TabActionCreator { 7 | static Action onAction() { 8 | return const Action(TabAction.action); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /lib/function/main/home/tab/component.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'state.dart'; 5 | import 'view.dart'; 6 | 7 | class TabComponent extends Component { 8 | TabComponent() 9 | : super( 10 | effect: buildEffect(), 11 | view: buildView, 12 | dependencies: Dependencies( 13 | adapter: null, slots: >{}), 14 | ); 15 | } 16 | -------------------------------------------------------------------------------- /lib/function/main/home/tab/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'action.dart'; 3 | import 'state.dart'; 4 | 5 | Effect buildEffect() { 6 | return combineEffects(>{ 7 | TabAction.action: _onAction, 8 | }); 9 | } 10 | 11 | void _onAction(Action action, Context ctx) { 12 | } 13 | -------------------------------------------------------------------------------- /lib/function/main/home/tab/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/function/main/home/model/home_entity.dart'; 2 | import 'package:fish_redux/fish_redux.dart'; 3 | 4 | class TabState implements Cloneable { 5 | List tabData; 6 | 7 | List recipe; 8 | 9 | @override 10 | TabState clone() { 11 | return TabState() 12 | ..tabData = tabData 13 | ..recipe = recipe; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /lib/function/main/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | MainAction.ChangeNewPage: _onChangeNewPage, 10 | }, 11 | ); 12 | } 13 | 14 | MainState _onChangeNewPage(MainState state, Action action) { 15 | final MainState newState = state.clone()..mainPageIndex = action.payload; 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/main/store/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/function/main/store/model/integral_commodity_entity.dart'; 2 | import 'package:fish_redux/fish_redux.dart'; 3 | 4 | enum StoreAction { Refresh, ResetPageData } 5 | 6 | class StoreActionCreator { 7 | static Action onRefresh(data) { 8 | return Action(StoreAction.Refresh, payload: data); 9 | } 10 | 11 | static Action onResetPageData(IntegralCommodityData map) { 12 | return Action(StoreAction.ResetPageData, payload: map); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /lib/function/main/store/adapter/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | //TODO replace with your own action 4 | enum IntegralStoreAction { action } 5 | 6 | class IntegralStoreActionCreator { 7 | static Action onAction() { 8 | return const Action(IntegralStoreAction.action); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /lib/function/main/store/adapter/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'action.dart'; 3 | import 'state.dart'; 4 | 5 | Effect buildEffect() { 6 | return combineEffects(>{ 7 | IntegralStoreAction.action: _onAction, 8 | }); 9 | } 10 | 11 | void _onAction(Action action, Context ctx) { 12 | } 13 | -------------------------------------------------------------------------------- /lib/function/main/store/adapter/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | IntegralStoreAction.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | IntegralStoreState _onAction(IntegralStoreState state, Action action) { 15 | final IntegralStoreState newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/main/store/adapter/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/function/main/store/model/integral_commodity_entity.dart'; 2 | import 'package:fish_redux/fish_redux.dart'; 3 | 4 | class IntegralStoreState implements Cloneable { 5 | IntegralCommodityData integralCommodityData; 6 | 7 | @override 8 | IntegralStoreState clone() { 9 | return IntegralStoreState()..integralCommodityData = integralCommodityData; 10 | } 11 | } 12 | 13 | IntegralStoreState initState(Map args) { 14 | return IntegralStoreState(); 15 | } 16 | -------------------------------------------------------------------------------- /lib/function/main/store/adapter/view.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | import 'action.dart'; 5 | import 'state.dart'; 6 | 7 | Widget buildView(IntegralStoreState state, Dispatch dispatch, ViewService viewService) { 8 | return Container(); 9 | } 10 | -------------------------------------------------------------------------------- /lib/function/main/store/coupon_detail/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class CouponDetailPage extends Page> { 9 | CouponDetailPage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/main/store/integral_commodity_detail/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum IntegralCommodityDetailAction { Buy, SetTotalIntegral } 4 | 5 | class IntegralCommodityDetailActionCreator { 6 | static Action onBuy() { 7 | return const Action(IntegralCommodityDetailAction.Buy); 8 | } 9 | 10 | static Action onSetTotalIntegral(int data) { 11 | return Action(IntegralCommodityDetailAction.SetTotalIntegral, 12 | payload: data); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /lib/function/main/store/integral_commodity_detail/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | IntegralCommodityDetailAction.SetTotalIntegral: _onSetTotalIntegral, 10 | }, 11 | ); 12 | } 13 | 14 | IntegralCommodityDetailState _onSetTotalIntegral( 15 | IntegralCommodityDetailState state, Action action) { 16 | final IntegralCommodityDetailState newState = state.clone() 17 | ..totalIntegral = action.payload; 18 | return newState; 19 | } 20 | -------------------------------------------------------------------------------- /lib/function/main/store/integral_component/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum IntegralItemAction { SkipIntegralCommodityDetailPage } 4 | 5 | class IntegralItemActionCreator { 6 | static Action onSkipIntegralCommodityDetailPage() { 7 | return const Action(IntegralItemAction.SkipIntegralCommodityDetailPage); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lib/function/main/store/integral_component/component.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class IntegralItemComponent extends Component { 9 | IntegralItemComponent() 10 | : super( 11 | effect: buildEffect(), 12 | reducer: buildReducer(), 13 | view: buildView, 14 | dependencies: Dependencies( 15 | adapter: null, 16 | slots: >{ 17 | }),); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /lib/function/main/store/integral_component/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | // IntegralItemAction.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | IntegralItemState _onAction(IntegralItemState state, Action action) { 15 | final IntegralItemState newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/main/store/integral_component/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/function/main/store/model/integral_commodity_entity.dart'; 2 | import 'package:fish_redux/fish_redux.dart'; 3 | 4 | class IntegralItemState implements Cloneable { 5 | var index; 6 | IntegralCommodityDataIntegralcommodity itemData; 7 | 8 | IntegralItemState({this.index, this.itemData}); 9 | 10 | @override 11 | IntegralItemState clone() { 12 | return IntegralItemState() 13 | ..index = index 14 | ..itemData = itemData; 15 | } 16 | } 17 | 18 | IntegralItemState initState(Map args) { 19 | return IntegralItemState(); 20 | } 21 | -------------------------------------------------------------------------------- /lib/function/main/store/integral_eleme_component/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum IntegralElemeItemAction { action, SkipElemeDetailPage } 4 | 5 | class IntegralElemeItemActionCreator { 6 | static Action onAction() { 7 | return const Action(IntegralElemeItemAction.action); 8 | } 9 | 10 | static Action onSkipElemeDetailPage() { 11 | return const Action(IntegralElemeItemAction.SkipElemeDetailPage); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lib/function/main/store/integral_eleme_component/component.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class IntegralElemeItemComponent extends Component { 9 | IntegralElemeItemComponent() 10 | : super( 11 | effect: buildEffect(), 12 | reducer: buildReducer(), 13 | view: buildView, 14 | dependencies: Dependencies( 15 | adapter: null, 16 | slots: >{ 17 | }),); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /lib/function/main/store/integral_eleme_component/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | IntegralElemeItemAction.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | IntegralElemeItemState _onAction(IntegralElemeItemState state, Action action) { 15 | final IntegralElemeItemState newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/main/store/integral_eleme_component/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/function/main/store/model/integral_commodity_entity.dart'; 2 | import 'package:fish_redux/fish_redux.dart'; 3 | 4 | class IntegralElemeItemState implements Cloneable { 5 | IntegralCommodityDataElemo itemData; 6 | 7 | IntegralElemeItemState({this.itemData}); 8 | 9 | @override 10 | IntegralElemeItemState clone() { 11 | return IntegralElemeItemState()..itemData = itemData; 12 | } 13 | } 14 | 15 | IntegralElemeItemState initState(Map args) { 16 | return IntegralElemeItemState(); 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/main/store/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | StoreAction.ResetPageData: _onResetPageData, 10 | }, 11 | ); 12 | } 13 | 14 | StoreState _onResetPageData(StoreState state, Action action) { 15 | final StoreState newState = state.clone() 16 | ..integralCommodityData = action.payload; 17 | return newState; 18 | } 19 | -------------------------------------------------------------------------------- /lib/function/movie/cinema_list/component.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class CinemaListComponent extends Component { 9 | CinemaListComponent() 10 | : super( 11 | effect: buildEffect(), 12 | reducer: buildReducer(), 13 | view: buildView, 14 | dependencies: Dependencies( 15 | adapter: null, 16 | slots: >{ 17 | }),); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /lib/function/movie/movie_cinema/model/movie_price_entity.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/generated/json/base/json_convert_content.dart'; 2 | import 'package:chongmeng/generated/json/base/json_filed.dart'; 3 | 4 | class MoviePriceEntity with JsonConvert { 5 | int status; 6 | String msg; 7 | MoviePriceData data; 8 | } 9 | 10 | class MoviePriceData with JsonConvert { 11 | double itemMoney; 12 | } 13 | -------------------------------------------------------------------------------- /lib/function/movie/movie_cinema/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class MovieCinemaPage extends Page> { 9 | MovieCinemaPage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/movie/movie_city/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class MovieCityPage extends Page> { 9 | MovieCityPage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/movie/movie_list/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum MovieListAction { 4 | ResetData, 5 | Refresh, 6 | SkipMovieDetailsPage, 7 | } 8 | 9 | class MovieListActionCreator { 10 | static Action onRefresh(p) { 11 | return Action(MovieListAction.Refresh, payload: p); 12 | } 13 | 14 | static Action onResetData(p) { 15 | return Action(MovieListAction.ResetData, payload: p); 16 | } 17 | 18 | static Action onSkipMovieDetailsPage(p) { 19 | return Action(MovieListAction.SkipMovieDetailsPage, payload: p); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/function/movie/movie_list/component.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class MovieListComponent extends Component { 9 | MovieListComponent() 10 | : super( 11 | effect: buildEffect(), 12 | reducer: buildReducer(), 13 | view: buildView, 14 | dependencies: Dependencies( 15 | adapter: null, 16 | slots: >{ 17 | }),); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /lib/function/movie/movie_list/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | MovieListAction.ResetData: _onResetData, 10 | }, 11 | ); 12 | } 13 | 14 | MovieListState _onResetData(MovieListState state, Action action) { 15 | final MovieListState newState = state.clone()..data = action.payload; 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/movie/movie_list/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:amap_location_fluttify/amap_location_fluttify.dart'; 2 | import 'package:chongmeng/function/movie/model/hot_movie_entity.dart'; 3 | import 'package:fish_redux/fish_redux.dart'; 4 | 5 | import '../state.dart'; 6 | 7 | class MovieListState implements Cloneable { 8 | HotMovieEntity data; 9 | Location location; 10 | String districtText; 11 | 12 | @override 13 | MovieListState clone() { 14 | return MovieListState() 15 | ..districtText = districtText 16 | ..location = location 17 | ..data = data; 18 | } 19 | } 20 | 21 | MovieListState initState(Map args) { 22 | return MovieListState()..districtText = "正在定位"; 23 | } 24 | -------------------------------------------------------------------------------- /lib/function/movie/movie_order_pre/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum MovieOrderPreAction { action, Commit } 4 | 5 | class MovieOrderPreActionCreator { 6 | static Action onAction() { 7 | return const Action(MovieOrderPreAction.action); 8 | } 9 | 10 | static Action onCommit() { 11 | return const Action(MovieOrderPreAction.Commit); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lib/function/movie/movie_order_pre/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class MovieOrderPrePage extends Page> { 9 | MovieOrderPrePage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/movie/movie_order_pre/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | MovieOrderPreAction.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | MovieOrderPreState _onAction(MovieOrderPreState state, Action action) { 15 | final MovieOrderPreState newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/movie/movie_seat/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/function/movie/movie_seat/model/seat_entity.dart'; 2 | import 'package:fish_redux/fish_redux.dart'; 3 | 4 | enum MovieSeatAction { SelectSeat, SetSeatData, Commit } 5 | 6 | class MovieSeatActionCreator { 7 | static Action onSelectSeat(SeatSeatdataSeatRegionsRowsSeat itemRow) { 8 | return Action(MovieSeatAction.SelectSeat, payload: itemRow); 9 | } 10 | 11 | static Action onSetSeatData(p) { 12 | return Action(MovieSeatAction.SetSeatData, payload: p); 13 | } 14 | 15 | static Action onCommit() { 16 | return Action(MovieSeatAction.Commit); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/function/movie/movie_seat/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class MovieSeatPage extends Page> { 9 | MovieSeatPage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/movie/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | MovieAction.SetDistrictText: _onSetDistrictText, 10 | MovieAction.ChangeNewPage: _onChangeNewPage, 11 | }, 12 | ); 13 | } 14 | 15 | MovieState _onSetDistrictText(MovieState state, Action action) { 16 | final MovieState newState = state.clone()..districtText = action.payload; 17 | return newState; 18 | } 19 | 20 | MovieState _onChangeNewPage(MovieState state, Action action) { 21 | final MovieState newState = state.clone()..pageIndex = action.payload; 22 | return newState; 23 | } 24 | -------------------------------------------------------------------------------- /lib/function/movie/seartch_cinema/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | //TODO replace with your own action 4 | enum SearchCinemaAction { action } 5 | 6 | class SearchCinemaActionCreator { 7 | static Action onAction() { 8 | return const Action(SearchCinemaAction.action); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /lib/function/movie/seartch_cinema/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'action.dart'; 3 | import 'state.dart'; 4 | 5 | Effect buildEffect() { 6 | return combineEffects(>{ 7 | SearchCinemaAction.action: _onAction, 8 | }); 9 | } 10 | 11 | void _onAction(Action action, Context ctx) { 12 | } 13 | -------------------------------------------------------------------------------- /lib/function/movie/seartch_cinema/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class SearchCinemaPage extends Page> { 9 | SearchCinemaPage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/movie/seartch_cinema/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | SearchCinemaAction.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | SearchCinemaState _onAction(SearchCinemaState state, Action action) { 15 | final SearchCinemaState newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/movie/seartch_cinema/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | class SearchCinemaState implements Cloneable { 4 | 5 | @override 6 | SearchCinemaState clone() { 7 | return SearchCinemaState(); 8 | } 9 | } 10 | 11 | SearchCinemaState initState(Map args) { 12 | return SearchCinemaState(); 13 | } 14 | -------------------------------------------------------------------------------- /lib/function/movie/seartch_cinema/view.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | import 'action.dart'; 5 | import 'state.dart'; 6 | 7 | Widget buildView(SearchCinemaState state, Dispatch dispatch, ViewService viewService) { 8 | return Container(); 9 | } 10 | -------------------------------------------------------------------------------- /lib/function/my_order/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class MyOrderPage extends Page> { 9 | MyOrderPage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/my_order/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | MyOrderAction.ResetPageData: _onResetPageData, 10 | }, 11 | ); 12 | } 13 | 14 | MyOrderState _onResetPageData(MyOrderState state, Action action) { 15 | final MyOrderState newState = state.clone()..data = action.payload; 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/my_order/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'model/my_order_entity.dart'; 4 | 5 | class MyOrderState implements Cloneable { 6 | MyOrderData data; 7 | 8 | @override 9 | MyOrderState clone() { 10 | return MyOrderState()..data = data; 11 | } 12 | } 13 | 14 | MyOrderState initState(Map args) { 15 | return MyOrderState(); 16 | } 17 | -------------------------------------------------------------------------------- /lib/function/my_order/virtual_product_review/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | //TODO replace with your own action 4 | enum VirtualProductReviewAction { action } 5 | 6 | class VirtualProductReviewActionCreator { 7 | static Action onAction() { 8 | return const Action(VirtualProductReviewAction.action); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /lib/function/my_order/virtual_product_review/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'action.dart'; 3 | import 'state.dart'; 4 | 5 | Effect buildEffect() { 6 | return combineEffects(>{ 7 | VirtualProductReviewAction.action: _onAction, 8 | }); 9 | } 10 | 11 | void _onAction(Action action, Context ctx) { 12 | } 13 | -------------------------------------------------------------------------------- /lib/function/my_order/virtual_product_review/model/virtual_pruduct.dart: -------------------------------------------------------------------------------- 1 | class VirtualProduct { 2 | String invalidTime; 3 | String content; 4 | String convertTime; 5 | String remake; 6 | String name; 7 | 8 | VirtualProduct( 9 | {this.invalidTime, 10 | this.content, 11 | this.convertTime, 12 | this.remake, 13 | this.name}); 14 | } 15 | -------------------------------------------------------------------------------- /lib/function/my_order/virtual_product_review/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | VirtualProductReviewAction.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | VirtualProductReviewState _onAction(VirtualProductReviewState state, Action action) { 15 | final VirtualProductReviewState newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/my_order/web_virtual_product_preview/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | //TODO replace with your own action 4 | enum WebVirtualProductPreviewAction { action } 5 | 6 | class WebVirtualProductPreviewActionCreator { 7 | static Action onAction() { 8 | return const Action(WebVirtualProductPreviewAction.action); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /lib/function/my_order/web_virtual_product_preview/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'action.dart'; 3 | import 'state.dart'; 4 | 5 | Effect buildEffect() { 6 | return combineEffects(>{ 7 | WebVirtualProductPreviewAction.action: _onAction, 8 | }); 9 | } 10 | 11 | void _onAction(Action action, Context ctx) { 12 | } 13 | -------------------------------------------------------------------------------- /lib/function/my_order/web_virtual_product_preview/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | WebVirtualProductPreviewAction.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | WebVirtualProductPreviewState _onAction(WebVirtualProductPreviewState state, Action action) { 15 | final WebVirtualProductPreviewState newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/my_order/web_virtual_product_preview/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/function/my_order/virtual_product_review/model/virtual_pruduct.dart'; 2 | import 'package:fish_redux/fish_redux.dart'; 3 | 4 | class WebVirtualProductPreviewState 5 | implements Cloneable { 6 | List data; 7 | 8 | @override 9 | WebVirtualProductPreviewState clone() { 10 | return WebVirtualProductPreviewState()..data = data; 11 | } 12 | } 13 | 14 | WebVirtualProductPreviewState initState(Map args) { 15 | return WebVirtualProductPreviewState()..data = args['data']; 16 | } 17 | -------------------------------------------------------------------------------- /lib/function/my_pet/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'model/pet_entity.dart'; 4 | 5 | enum MyPetAction { ResetData, Refresh, SkipAddPetPage } 6 | 7 | class MyPetActionCreator { 8 | static Action onResetData(List data) { 9 | return Action(MyPetAction.ResetData, payload: data); 10 | } 11 | 12 | static Action onRefresh(Map map) { 13 | return Action(MyPetAction.Refresh, payload: map); 14 | } 15 | 16 | static Action onSkipAddPetPage() { 17 | return Action(MyPetAction.SkipAddPetPage); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /lib/function/my_pet/add/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class PetAddPage extends Page> { 9 | PetAddPage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/my_pet/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class MyPetPage extends Page> { 9 | MyPetPage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/my_pet/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | MyPetAction.ResetData: _onResetData, 10 | }, 11 | ); 12 | } 13 | 14 | MyPetState _onResetData(MyPetState state, Action action) { 15 | final MyPetState newState = state.clone()..data = action.payload; 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/my_pet/selectsubtype/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum SelectSubTypeAction { SelectSubType } 4 | 5 | class SelectSubTypeActionCreator { 6 | static Action onSelectSubType(p) { 7 | return Action(SelectSubTypeAction.SelectSubType, payload: p); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lib/function/my_pet/selectsubtype/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/routes.dart'; 2 | import 'package:fish_redux/fish_redux.dart'; 3 | import 'package:flutter/material.dart' hide Action; 4 | import 'action.dart'; 5 | import 'state.dart'; 6 | 7 | Effect buildEffect() { 8 | return combineEffects(>{ 9 | SelectSubTypeAction.SelectSubType: _onSelectSubType, 10 | }); 11 | } 12 | 13 | void _onSelectSubType(Action action, Context ctx) { 14 | Navigator.pop(ctx.context, action.payload); 15 | } 16 | -------------------------------------------------------------------------------- /lib/function/my_pet/selectsubtype/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'state.dart'; 5 | import 'view.dart'; 6 | 7 | class SelectSubTypePage extends Page> { 8 | SelectSubTypePage() 9 | : super( 10 | initState: initState, 11 | effect: buildEffect(), 12 | view: buildView, 13 | dependencies: Dependencies( 14 | adapter: null, 15 | slots: >{ 16 | }), 17 | middleware: >[ 18 | ],); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /lib/function/my_pet/selecttype/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum SelectTypeAction { SkipSelectSubTypePage } 4 | 5 | class SelectTypeActionCreator { 6 | static Action onSkipSelectSubTypePage(type) { 7 | return Action(SelectTypeAction.SkipSelectSubTypePage, payload: type); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lib/function/my_pet/selecttype/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'state.dart'; 5 | import 'view.dart'; 6 | 7 | class SelectTypePage extends Page> { 8 | SelectTypePage() 9 | : super( 10 | initState: initState, 11 | effect: buildEffect(), 12 | view: buildView, 13 | dependencies: Dependencies( 14 | adapter: null, 15 | slots: >{ 16 | }), 17 | middleware: >[ 18 | ],); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /lib/function/my_pet/selecttype/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'model/pet_type_entity.dart'; 4 | 5 | class SelectTypeState implements Cloneable { 6 | List data; 7 | 8 | @override 9 | SelectTypeState clone() { 10 | return SelectTypeState()..data = data; 11 | } 12 | } 13 | 14 | SelectTypeState initState(Map args) { 15 | return SelectTypeState()..data = args['petTypeEntity']; 16 | ; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/my_pet/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'model/pet_entity.dart'; 4 | 5 | class MyPetState implements Cloneable { 6 | List data; 7 | 8 | @override 9 | MyPetState clone() { 10 | return MyPetState()..data = data; 11 | } 12 | } 13 | 14 | MyPetState initState(Map args) { 15 | return MyPetState(); 16 | } 17 | -------------------------------------------------------------------------------- /lib/function/product_details/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum ProductDetailsAction { SetDetailsData, Refresh, Share, SkipBuyPage } 4 | 5 | class ProductDetailsActionCreator { 6 | static Action onSetDetailsData(data) { 7 | return Action(ProductDetailsAction.SetDetailsData, payload: data); 8 | } 9 | 10 | static Action onRefresh(data) { 11 | return Action(ProductDetailsAction.Refresh, payload: data); 12 | } 13 | 14 | static Action onShare() { 15 | return Action(ProductDetailsAction.Share); 16 | } 17 | 18 | static Action onSkipBuyPage() { 19 | return Action(ProductDetailsAction.SkipBuyPage); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/function/product_details/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class ProductDetailsPage extends Page> { 9 | ProductDetailsPage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/product_details/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | ProductDetailsAction.SetDetailsData: _onSetDetailsData, 10 | }, 11 | ); 12 | } 13 | 14 | ProductDetailsState _onSetDetailsData( 15 | ProductDetailsState state, Action action) { 16 | final ProductDetailsState newState = state.clone() 17 | ..detailsEntity = action.payload; 18 | return newState; 19 | } 20 | -------------------------------------------------------------------------------- /lib/function/recipe/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum RecipeAction { ResetData, Refresh } 4 | 5 | class RecipeActionCreator { 6 | static Action onResetData(data) { 7 | return Action(RecipeAction.ResetData, payload: data); 8 | } 9 | 10 | static Action onRefresh(Map map) { 11 | return Action(RecipeAction.Refresh, payload: map); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lib/function/recipe/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class RecipePage extends Page> { 9 | RecipePage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, slots: >{}), 17 | middleware: >[], 18 | ); 19 | @override 20 | ComponentState createState() { 21 | return RecipePageState(); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /lib/function/recipe/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | RecipeAction.ResetData: _onResetData, 10 | }, 11 | ); 12 | } 13 | 14 | RecipeState _onResetData(RecipeState state, Action action) { 15 | final RecipeState newState = state.clone(); 16 | newState.data = action.payload; 17 | return newState; 18 | } 19 | -------------------------------------------------------------------------------- /lib/function/record/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class RecordPage extends Page> { 9 | RecordPage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/record/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | RecordAction.RefreshPage: _onRefreshPage, 10 | }, 11 | ); 12 | } 13 | 14 | RecordState _onRefreshPage(RecordState state, Action action) { 15 | final RecordState newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/record/review/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum ReviewIVAction { SkipCommitPage } 4 | 5 | class ReviewIVActionCreator { 6 | static Action onSkipCommitPage() { 7 | return const Action(ReviewIVAction.SkipCommitPage); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lib/function/record/review/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class ReviewIVPage extends Page> { 9 | ReviewIVPage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/record/review/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | // ReviewIVAction.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | ReviewIVState _onAction(ReviewIVState state, Action action) { 15 | final ReviewIVState newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/record/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'package:camera/camera.dart'; 3 | 4 | class RecordState implements Cloneable { 5 | List cameras; 6 | 7 | CameraController controller; 8 | 9 | String videoPath; 10 | 11 | @override 12 | RecordState clone() { 13 | return RecordState() 14 | ..cameras = cameras 15 | ..controller = controller 16 | ..videoPath = videoPath; 17 | } 18 | } 19 | 20 | RecordState initState(Map args) { 21 | return RecordState()..cameras = args['cameras']; 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/review_image/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum ReviewImageAction { action } 4 | 5 | class ReviewImageActionCreator { 6 | static Action onAction() { 7 | return const Action(ReviewImageAction.action); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lib/function/review_image/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'action.dart'; 3 | import 'state.dart'; 4 | 5 | Effect buildEffect() { 6 | return combineEffects(>{ 7 | ReviewImageAction.action: _onAction, 8 | }); 9 | } 10 | 11 | void _onAction(Action action, Context ctx) { 12 | } 13 | -------------------------------------------------------------------------------- /lib/function/review_image/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class ReviewImagePage extends Page> { 9 | ReviewImagePage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/review_image/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | ReviewImageAction.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | ReviewImageState _onAction(ReviewImageState state, Action action) { 15 | final ReviewImageState newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/review_image/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | class ReviewImageState implements Cloneable { 5 | List images; 6 | int index; 7 | PageController pageController; 8 | 9 | @override 10 | ReviewImageState clone() { 11 | return ReviewImageState() 12 | ..images = images 13 | ..index = index; 14 | } 15 | } 16 | 17 | ReviewImageState initState(Map args) { 18 | return ReviewImageState() 19 | ..images = args['images'] 20 | ..index = args['index'] 21 | ..pageController = PageController(initialPage: args['index']); 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/safe_center/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum SafeCenterAction { BindAndUnBind, Refresh, ResetData } 4 | 5 | class SafeCenterActionCreator { 6 | static Action onBindAndUnBind(String type) { 7 | return Action(SafeCenterAction.BindAndUnBind, payload: type); 8 | } 9 | 10 | static Action onRefresh(Map map) { 11 | return Action(SafeCenterAction.Refresh, payload: map); 12 | } 13 | 14 | static Action onResetData(map) { 15 | return Action(SafeCenterAction.ResetData, payload: map); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/safe_center/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class SafeCenterPage extends Page> { 9 | SafeCenterPage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/safe_center/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | SafeCenterAction.ResetData: _onResetData, 10 | }, 11 | ); 12 | } 13 | 14 | SafeCenterState _onResetData(SafeCenterState state, Action action) { 15 | final SafeCenterState newState = state.clone()..data = action.payload; 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/safe_center/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'model/safe_entity.dart'; 4 | 5 | class SafeCenterState implements Cloneable { 6 | SafeData data; 7 | 8 | @override 9 | SafeCenterState clone() { 10 | return SafeCenterState()..data = data; 11 | } 12 | } 13 | 14 | SafeCenterState initState(Map args) { 15 | return SafeCenterState(); 16 | } 17 | -------------------------------------------------------------------------------- /lib/function/search/adapter/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum SearchListAction { action } 4 | 5 | class SearchListActionCreator { 6 | static Action onAction() { 7 | return const Action(SearchListAction.action); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lib/function/search/adapter/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import '../state.dart'; 4 | import 'action.dart'; 5 | 6 | Effect buildEffect() { 7 | return combineEffects(>{ 8 | SearchListAction.action: _onAction, 9 | }); 10 | } 11 | 12 | void _onAction(Action action, Context ctx) {} 13 | -------------------------------------------------------------------------------- /lib/function/search/adapter/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import '../state.dart'; 4 | import 'action.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | SearchListAction.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | SearchState _onAction(SearchState state, Action action) { 15 | final SearchState newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/search/adapter/view.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/function/search/state.dart'; 2 | import 'package:fish_redux/fish_redux.dart'; 3 | import 'package:flutter/material.dart'; 4 | 5 | import 'action.dart'; 6 | 7 | Widget buildView( 8 | SearchState state, Dispatch dispatch, ViewService viewService) { 9 | return Container(); 10 | } 11 | -------------------------------------------------------------------------------- /lib/function/search/filtrate/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum SearchFiltrateAction { SetType, SetTypeAndSearch } 4 | 5 | class SearchFiltrateActionCreator { 6 | static Action onSetType(int type) { 7 | return Action(SearchFiltrateAction.SetType, payload: type); 8 | } 9 | 10 | static Action onSetTypeAndSearch(int type) { 11 | return Action(SearchFiltrateAction.SetTypeAndSearch, payload: type); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lib/function/search/filtrate/component.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class SearchFiltrateComponent extends Component { 9 | SearchFiltrateComponent() 10 | : super( 11 | effect: buildEffect(), 12 | reducer: buildReducer(), 13 | view: buildView, 14 | dependencies: Dependencies( 15 | adapter: null, 16 | slots: >{ 17 | }),); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /lib/function/search/filtrate/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import '../action.dart'; 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Effect buildEffect() { 7 | return combineEffects(>{ 8 | SearchFiltrateAction.SetTypeAndSearch: _onSetTypeAndSearch, 9 | }); 10 | } 11 | 12 | void _onSetTypeAndSearch(Action action, Context ctx) { 13 | ctx.dispatch(SearchFiltrateActionCreator.onSetType(action.payload)); 14 | ctx.dispatch(SearchActionCreator.onSearch()); 15 | } 16 | -------------------------------------------------------------------------------- /lib/function/search/filtrate/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | SearchFiltrateAction.SetType: _onSetType, 10 | }, 11 | ); 12 | } 13 | 14 | SearchFiltrateState _onSetType(SearchFiltrateState state, Action action) { 15 | final SearchFiltrateState newState = state.clone()..type = action.payload; 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/search/filtrate/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | class SearchFiltrateState implements Cloneable { 4 | var type = 0; 5 | 6 | //综合 7 | static const int synthesize = 0; 8 | 9 | //销量 10 | static const int volume = 1; 11 | 12 | //价格降序 13 | static const int price_desc = 2; 14 | 15 | //价格升序 16 | static const int price_asc = 3; 17 | 18 | @override 19 | SearchFiltrateState clone() { 20 | return SearchFiltrateState()..type = type; 21 | } 22 | } 23 | 24 | SearchFiltrateState initState(Map args) { 25 | return SearchFiltrateState()..type = SearchFiltrateState.synthesize; 26 | } 27 | -------------------------------------------------------------------------------- /lib/function/setting/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum SettingAction { action } 4 | 5 | class SettingActionCreator { 6 | static Action onAction() { 7 | return const Action(SettingAction.action); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lib/function/setting/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'action.dart'; 3 | import 'state.dart'; 4 | 5 | Effect buildEffect() { 6 | return combineEffects(>{ 7 | SettingAction.action: _onAction, 8 | }); 9 | } 10 | 11 | void _onAction(Action action, Context ctx) { 12 | } 13 | -------------------------------------------------------------------------------- /lib/function/setting/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class SettingPage extends Page> { 9 | SettingPage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/setting/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | SettingAction.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | SettingState _onAction(SettingState state, Action action) { 15 | final SettingState newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/setting/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | class SettingState implements Cloneable { 4 | 5 | @override 6 | SettingState clone() { 7 | return SettingState(); 8 | } 9 | } 10 | 11 | SettingState initState(Map args) { 12 | return SettingState(); 13 | } 14 | -------------------------------------------------------------------------------- /lib/function/share/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | //TODO replace with your own action 4 | enum ShareAction { action } 5 | 6 | class ShareActionCreator { 7 | static Action onAction() { 8 | return const Action(ShareAction.action); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /lib/function/share/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'action.dart'; 3 | import 'state.dart'; 4 | 5 | Effect buildEffect() { 6 | return combineEffects(>{ 7 | ShareAction.action: _onAction, 8 | }); 9 | } 10 | 11 | void _onAction(Action action, Context ctx) { 12 | } 13 | -------------------------------------------------------------------------------- /lib/function/share/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class SharePage extends Page> { 9 | SharePage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/share/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | ShareAction.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | ShareState _onAction(ShareState state, Action action) { 15 | final ShareState newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/share/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'package:flutter/cupertino.dart'; 3 | 4 | class ShareState implements Cloneable { 5 | Map args; 6 | Widget title; 7 | 8 | @override 9 | ShareState clone() { 10 | return ShareState() 11 | ..args = args 12 | ..title = title; 13 | } 14 | 15 | static String text = "text"; 16 | static String h5 = "h5"; 17 | } 18 | 19 | ShareState initState(Map args) { 20 | return ShareState() 21 | ..args = args 22 | ..title = args['title']; 23 | } 24 | -------------------------------------------------------------------------------- /lib/function/shipping_address/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum ShippingAddressAction { Refresh, SkipAddAddress, ResetData } 4 | 5 | class ShippingAddressActionCreator { 6 | static Action onRefresh(Map map) { 7 | return Action(ShippingAddressAction.Refresh, payload: map); 8 | } 9 | 10 | static Action onSkipAddAddress() { 11 | return const Action(ShippingAddressAction.SkipAddAddress); 12 | } 13 | 14 | static Action onResetData(data) { 15 | return Action(ShippingAddressAction.ResetData, payload: data); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/shipping_address/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class ShippingAddressPage 9 | extends Page> { 10 | ShippingAddressPage() 11 | : super( 12 | initState: initState, 13 | effect: buildEffect(), 14 | reducer: buildReducer(), 15 | view: buildView, 16 | dependencies: Dependencies( 17 | adapter: null, 18 | slots: >{}), 19 | middleware: >[], 20 | ); 21 | } 22 | -------------------------------------------------------------------------------- /lib/function/shipping_address/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | ShippingAddressAction.ResetData: _onResetData, 10 | }, 11 | ); 12 | } 13 | 14 | ShippingAddressState _onResetData(ShippingAddressState state, Action action) { 15 | final ShippingAddressState newState = state.clone()..data = action.payload; 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/shipping_address/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'model/shipping_address_entity.dart'; 4 | 5 | class ShippingAddressState implements Cloneable { 6 | List data; 7 | int type; 8 | static int SEE = 0; 9 | static int SELECT = 1; 10 | 11 | @override 12 | ShippingAddressState clone() { 13 | return ShippingAddressState()..data = data; 14 | } 15 | } 16 | 17 | ShippingAddressState initState(Map args) { 18 | return ShippingAddressState()..type = args["type"]; 19 | } 20 | -------------------------------------------------------------------------------- /lib/function/signin/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum SignInAction { SetPageData, Sign } 4 | 5 | class SignInActionCreator { 6 | static Action onSetPageData(data) { 7 | return Action(SignInAction.SetPageData, payload: data); 8 | } 9 | 10 | static Action onSign() { 11 | return const Action(SignInAction.Sign); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lib/function/signin/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class SignInPage extends Page> { 9 | SignInPage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/signin/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'model/sign_list_entity.dart'; 5 | import 'state.dart'; 6 | 7 | Reducer buildReducer() { 8 | return asReducer( 9 | >{ 10 | SignInAction.SetPageData: _onSetPageData, 11 | }, 12 | ); 13 | } 14 | 15 | SignInState _onSetPageData(SignInState state, Action action) { 16 | final SignInState newState = state.clone()..data = action.payload; 17 | SignListData signListData = action.payload as SignListData; 18 | newState.markers.clear(); 19 | signListData.signList?.signTime?.forEach((item) { 20 | newState.markers[DateTime.parse(item)] = []; 21 | }); 22 | return newState; 23 | } 24 | -------------------------------------------------------------------------------- /lib/function/signin/signinresult/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum SignInResultDialogAction { action } 4 | 5 | class SignInResultDialogActionCreator { 6 | static Action onAction() { 7 | return const Action(SignInResultDialogAction.action); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lib/function/signin/signinresult/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'action.dart'; 3 | import 'state.dart'; 4 | 5 | Effect buildEffect() { 6 | return combineEffects(>{ 7 | SignInResultDialogAction.action: _onAction, 8 | }); 9 | } 10 | 11 | void _onAction(Action action, Context ctx) { 12 | } 13 | -------------------------------------------------------------------------------- /lib/function/signin/signinresult/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | SignInResultDialogAction.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | SignInResultDialogState _onAction(SignInResultDialogState state, Action action) { 15 | final SignInResultDialogState newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/signin/signinresult/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/function/signin/model/sign_in_result_entity.dart'; 2 | import 'package:fish_redux/fish_redux.dart'; 3 | 4 | class SignInResultDialogState implements Cloneable { 5 | SignInResultData pageData; 6 | 7 | @override 8 | SignInResultDialogState clone() { 9 | return SignInResultDialogState()..pageData = pageData; 10 | } 11 | } 12 | 13 | SignInResultDialogState initState(Map args) { 14 | return SignInResultDialogState()..pageData = args['pageData']; 15 | } 16 | -------------------------------------------------------------------------------- /lib/function/splash/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum SplashAction { PushMainPage, ChangeTimeValue } 4 | 5 | class SplashActionCreator { 6 | static Action onPushMainPage() { 7 | return const Action(SplashAction.PushMainPage); 8 | } 9 | 10 | static Action onChangeTimeValue(int n) { 11 | return Action(SplashAction.ChangeTimeValue, payload: n); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lib/function/splash/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | SplashAction.ChangeTimeValue: _onChangeTimeValue, 10 | }, 11 | ); 12 | } 13 | 14 | SplashState _onChangeTimeValue(SplashState state, Action action) { 15 | final SplashState newState = state.clone()..n = (action.payload as int); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/splash/state.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | 3 | import 'package:chongmeng/constants/constants.dart'; 4 | import 'package:fish_redux/fish_redux.dart'; 5 | 6 | class SplashState implements Cloneable { 7 | int n = isRelease ? 1 : 1; 8 | 9 | Timer timer; 10 | 11 | @override 12 | SplashState clone() { 13 | return SplashState() 14 | ..timer = timer 15 | ..n = n; 16 | } 17 | } 18 | 19 | SplashState initState(Map args) { 20 | return SplashState(); 21 | } 22 | -------------------------------------------------------------------------------- /lib/function/tally/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum TallyAction { action, SkipAddTallyPage, Refresh, AddPageListData } 4 | 5 | class TallyActionCreator { 6 | static Action onAction() { 7 | return const Action(TallyAction.action); 8 | } 9 | 10 | static Action onSkipAddTallyPage() { 11 | return const Action(TallyAction.SkipAddTallyPage); 12 | } 13 | 14 | static Action onRefresh(Map map) { 15 | return Action(TallyAction.Refresh, payload: map); 16 | } 17 | 18 | static Action onAddPageListData(Map map) { 19 | return Action(TallyAction.AddPageListData, payload: map); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/function/tally/add/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class AddTallyPage extends Page> { 9 | AddTallyPage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/tally/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class TallyPage extends Page> { 9 | TallyPage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/tally/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | TallyAction.AddPageListData: _onAddPageListData, 10 | }, 11 | ); 12 | } 13 | 14 | TallyState _onAddPageListData(TallyState state, Action action) { 15 | final TallyState newState = state.clone(); 16 | newState.data = action.payload['data']; 17 | return newState; 18 | } 19 | -------------------------------------------------------------------------------- /lib/function/tally/state.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'package:flutter_easyrefresh/easy_refresh.dart'; 3 | 4 | import 'entity/current_user_tally_entity.dart'; 5 | 6 | class TallyState implements Cloneable { 7 | List data; 8 | EasyRefreshController easyRefreshController; 9 | 10 | @override 11 | TallyState clone() { 12 | return TallyState() 13 | ..data = data 14 | ..easyRefreshController = easyRefreshController; 15 | } 16 | } 17 | 18 | TallyState initState(Map args) { 19 | return TallyState()..easyRefreshController = EasyRefreshController(); 20 | } 21 | -------------------------------------------------------------------------------- /lib/function/update/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | enum UpdateAction { UpdateProgress, StartDown } 4 | 5 | class UpdateActionCreator { 6 | static Action onUpdateProgress(progress) { 7 | return Action(UpdateAction.UpdateProgress, payload: progress); 8 | } 9 | 10 | static Action onStartDown() { 11 | return const Action(UpdateAction.StartDown); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lib/function/update/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class UpdatePage extends Page> { 9 | UpdatePage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/update/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | UpdateAction.UpdateProgress: _onUpdateProgress, 10 | }, 11 | ); 12 | } 13 | 14 | UpdateState _onUpdateProgress(UpdateState state, Action action) { 15 | final UpdateState newState = state.clone()..percent = action.payload; 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/update/state.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | 3 | import 'package:fish_redux/fish_redux.dart'; 4 | 5 | import 'model/update_entity.dart'; 6 | 7 | class UpdateState implements Cloneable { 8 | UpdateData data; 9 | 10 | // 进度订阅 11 | StreamSubscription downloadSubscription; 12 | 13 | int percent; 14 | 15 | @override 16 | UpdateState clone() { 17 | return UpdateState() 18 | ..data = data 19 | ..downloadSubscription = downloadSubscription 20 | ..percent = percent; 21 | } 22 | } 23 | 24 | UpdateState initState(Map args) { 25 | return UpdateState() 26 | ..data = args['data'] 27 | ..percent = 0; 28 | } 29 | -------------------------------------------------------------------------------- /lib/function/user_details/edit/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | UserDetailsEditAction.SetLocalAvatar: _onSetLocalAvatar, 10 | }, 11 | ); 12 | } 13 | 14 | UserDetailsEditState _onSetLocalAvatar( 15 | UserDetailsEditState state, Action action) { 16 | final UserDetailsEditState newState = state.clone() 17 | ..localAvatar = action.payload; 18 | return newState; 19 | } 20 | -------------------------------------------------------------------------------- /lib/function/webview/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | //TODO replace with your own action 4 | enum WebviewAction { action } 5 | 6 | class WebviewActionCreator { 7 | static Action onAction() { 8 | return const Action(WebviewAction.action); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /lib/function/webview/effect.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'action.dart'; 3 | import 'state.dart'; 4 | 5 | Effect buildEffect() { 6 | return combineEffects(>{ 7 | WebviewAction.action: _onAction, 8 | }); 9 | } 10 | 11 | void _onAction(Action action, Context ctx) { 12 | } 13 | -------------------------------------------------------------------------------- /lib/function/webview/page.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'effect.dart'; 4 | import 'reducer.dart'; 5 | import 'state.dart'; 6 | import 'view.dart'; 7 | 8 | class WebviewPage extends Page> { 9 | WebviewPage() 10 | : super( 11 | initState: initState, 12 | effect: buildEffect(), 13 | reducer: buildReducer(), 14 | view: buildView, 15 | dependencies: Dependencies( 16 | adapter: null, 17 | slots: >{ 18 | }), 19 | middleware: >[ 20 | ],); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/function/webview/reducer.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | 3 | import 'action.dart'; 4 | import 'state.dart'; 5 | 6 | Reducer buildReducer() { 7 | return asReducer( 8 | >{ 9 | WebviewAction.action: _onAction, 10 | }, 11 | ); 12 | } 13 | 14 | WebviewState _onAction(WebviewState state, Action action) { 15 | final WebviewState newState = state.clone(); 16 | return newState; 17 | } 18 | -------------------------------------------------------------------------------- /lib/function/webview/state.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | 3 | import 'package:fish_redux/fish_redux.dart'; 4 | import 'package:webview_flutter/webview_flutter.dart'; 5 | 6 | class WebviewState implements Cloneable { 7 | Completer controller = Completer(); 8 | String url; 9 | String title; 10 | 11 | @override 12 | WebviewState clone() { 13 | return WebviewState() 14 | ..controller = controller 15 | ..title = title 16 | ..url = url; 17 | } 18 | } 19 | 20 | WebviewState initState(Map args) { 21 | return WebviewState() 22 | ..url = args['url'] 23 | ..title = args['title']; 24 | } 25 | -------------------------------------------------------------------------------- /lib/generated/json/base/json_filed.dart: -------------------------------------------------------------------------------- 1 | // ignore_for_file: non_constant_identifier_names 2 | // ignore_for_file: camel_case_types 3 | // ignore_for_file: prefer_single_quotes 4 | 5 | // This file is automatically generated. DO NOT EDIT, all your changes would be lost. 6 | 7 | class JSONField { 8 | //Specify the parse field name 9 | final String name; 10 | 11 | //Specify the time resolution format 12 | final String format; 13 | 14 | //Whether to participate in toJson 15 | final bool serialize; 16 | 17 | //Whether to participate in fromMap 18 | final bool deserialize; 19 | 20 | const JSONField({this.name, this.format, this.serialize, this.deserialize}); 21 | } 22 | -------------------------------------------------------------------------------- /lib/generated/json/outermost_entity_helper.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/network/entity/outermost_entity.dart'; 2 | 3 | outermostEntityFromJson(OutermostEntity data, Map json) { 4 | if (json['status'] != null) { 5 | data.status = json['status']?.toInt(); 6 | } 7 | return data; 8 | } 9 | 10 | Map outermostEntityToJson(OutermostEntity entity) { 11 | final Map data = new Map(); 12 | data['status'] = entity.status; 13 | return data; 14 | } -------------------------------------------------------------------------------- /lib/global_store/action.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/function/auto/model/login_entity.dart'; 2 | import 'package:chongmeng/helper/model/local_user.dart'; 3 | import 'package:fish_redux/fish_redux.dart'; 4 | 5 | enum GlobalAction { ChangeLanguage, UpdateLocalUser, LoginOut } 6 | 7 | class GlobalActionCreator { 8 | static Action onChangeLanguage() { 9 | return const Action(GlobalAction.ChangeLanguage); 10 | } 11 | 12 | static Action onUpdateLocalUser(LocalUser user) { 13 | return Action(GlobalAction.UpdateLocalUser, payload: user); 14 | } 15 | 16 | static Action onLoginOut() { 17 | return Action( 18 | GlobalAction.LoginOut, 19 | ); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/global_store/store.dart: -------------------------------------------------------------------------------- 1 | import 'package:fish_redux/fish_redux.dart'; 2 | import 'package:flutter/material.dart' hide Action; 3 | import 'reducer.dart'; 4 | import 'state.dart'; 5 | 6 | class GlobalStore { 7 | static Store _globalStore; 8 | 9 | //此处默认值调试阶段 10 | /*static Store get store => 11 | _globalStore ??= createStore( 12 | GlobalState(locale: Locale('zh', 'CH')), buildReducer()); 13 | */ 14 | static Store get store => 15 | _globalStore ??= createStore(GlobalState(), buildReducer()); 16 | 17 | static GlobalState get state => store.getState(); 18 | } 19 | -------------------------------------------------------------------------------- /lib/helper/qqwx_helper.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/constants/constants.dart'; 2 | import 'package:fluwx/fluwx.dart' as fluwx; 3 | 4 | class QQWXHelper { 5 | static void init() { 6 | fluwx.register( 7 | appId: WXKey, universalLink: "https://www.keleyuanyuan.xyz/"); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lib/localizetion/data/abstract_locale_string.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/src/widgets/framework.dart'; 2 | 3 | abstract class AbstractLocaleString { 4 | String me; 5 | String loginSmsCode; 6 | String splashSkip; 7 | 8 | String get appName; 9 | } 10 | -------------------------------------------------------------------------------- /lib/localizetion/data/locale_string_en.dart: -------------------------------------------------------------------------------- 1 | import 'abstract_locale_string.dart'; 2 | 3 | class LocaleStringEn extends AbstractLocaleString { 4 | @override 5 | String me = 'Me'; 6 | 7 | @override 8 | String loginSmsCode = 'captcha code'; 9 | 10 | @override 11 | String splashSkip = ' skip'; 12 | 13 | @override 14 | String get appName => "萌宠"; 15 | } 16 | -------------------------------------------------------------------------------- /lib/localizetion/data/locale_string_zh.dart: -------------------------------------------------------------------------------- 1 | import 'abstract_locale_string.dart'; 2 | 3 | class LocaleStringZh extends AbstractLocaleString { 4 | @override 5 | String me = '我'; 6 | @override 7 | String loginSmsCode = '获取验证码'; 8 | 9 | @override 10 | String splashSkip = '跳过'; 11 | 12 | @override 13 | String get appName => '萌宠'; 14 | } 15 | -------------------------------------------------------------------------------- /lib/localizetion/fallback_cupertino_localisations_delegate.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | import 'default_localization.dart'; 5 | import 'localizations_delegate.dart'; 6 | 7 | class FallbackCupertinoLocalisationsDelegate 8 | extends LocalizationsDelegate { 9 | const FallbackCupertinoLocalisationsDelegate(); 10 | 11 | @override 12 | bool isSupported(Locale locale) => true; 13 | 14 | @override 15 | Future load(Locale locale) => 16 | DefaultLocalizationsDelegate().load(locale); 17 | 18 | @override 19 | bool shouldReload(FallbackCupertinoLocalisationsDelegate old) => false; 20 | } 21 | -------------------------------------------------------------------------------- /lib/network/entity/outermost_entity.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/generated/json/base/json_convert_content.dart'; 2 | 3 | class OutermostEntity with JsonConvert { 4 | int status; 5 | } 6 | -------------------------------------------------------------------------------- /lib/network/net_exception.dart: -------------------------------------------------------------------------------- 1 | class NetException implements Exception { 2 | final code; 3 | final message; 4 | final errorData; 5 | 6 | NetException({this.code, this.message, this.errorData}); 7 | 8 | String toString() { 9 | if (message == null) return "Exception"; 10 | return "$message errorData $errorData}"; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/utils/color_utils.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart' hide Action; 2 | 3 | class ColorUtils { 4 | static Color randomColor(String name) { 5 | final int hash = name.hashCode & 0xffff; 6 | final double hue = (360.0 * hash / (1 << 15)) % 360.0; 7 | return HSVColor.fromAHSV(1.0, hue, 0.4, 0.90).toColor(); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lib/utils/hex_color.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class HexColor extends Color { 4 | static int _getColorFromHex(String hexColor) { 5 | hexColor = hexColor.toUpperCase().replaceAll("#", ""); 6 | if (hexColor.length == 6) { 7 | hexColor = "FF" + hexColor; 8 | } 9 | return int.parse(hexColor, radix: 16); 10 | } 11 | 12 | HexColor(final String hexColor) 13 | : super(_getColorFromHex(hexColor.replaceAll("'", ""))); 14 | } 15 | -------------------------------------------------------------------------------- /lib/utils/jmessage_utils.dart: -------------------------------------------------------------------------------- 1 | import 'package:jmessage_flutter/jmessage_flutter.dart'; 2 | 3 | import 'jiguang_utils.dart'; 4 | 5 | class JMessageUtils { 6 | static Future resetUnreadMessageCount(target) async { 7 | if (target is JMUserInfo) { 8 | JMUserInfo jmUserInfo = target; 9 | await jmessage.resetUnreadMessageCount(target: jmUserInfo.targetType); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/utils/window_utils.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | import 'dart:ui'; 3 | import 'package:flutter/material.dart' hide Action; 4 | 5 | class WindowUtils { 6 | static double getScreenWidth() { 7 | return window.physicalSize.width / window.devicePixelRatio; 8 | } 9 | 10 | static double getScreenHeight() { 11 | return window.physicalSize.height / window.devicePixelRatio; 12 | } 13 | 14 | static bool isIPhoneX(BuildContext context) { 15 | if (Platform.isIOS) { 16 | var size = MediaQuery.of(context).size; 17 | if (size.height == 812.0 || size.width == 812.0) { 18 | return true; 19 | } 20 | } 21 | return false; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /lib/widget/empty_widget.dart: -------------------------------------------------------------------------------- 1 | import 'package:chongmeng/helper/navigator_helper.dart'; 2 | import 'package:flutter/material.dart' hide Action; 3 | import 'package:flutter_spinkit/flutter_spinkit.dart'; 4 | 5 | class EmptyWidget extends StatelessWidget { 6 | @override 7 | Widget build(BuildContext context) { 8 | var theme = Theme.of(context); 9 | return Center( 10 | child: Container( 11 | height: 50.0, 12 | child: Text("暂无数据"), 13 | ), 14 | ); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /lib/widget/keep_alive_widget.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class KeepAliveWidget extends StatefulWidget { 4 | final Widget child; 5 | 6 | const KeepAliveWidget({this.child}); 7 | 8 | @override 9 | State createState() => KeepAliveState(); 10 | } 11 | 12 | class KeepAliveState extends State 13 | with AutomaticKeepAliveClientMixin { 14 | @override 15 | bool get wantKeepAlive => true; 16 | 17 | @override 18 | Widget build(BuildContext context) { 19 | super.build(context); 20 | return widget.child; 21 | } 22 | } 23 | 24 | Widget keepAliveWrapper(Widget child) { 25 | return KeepAliveWidget(child: child); 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/vertical_line.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart' hide Action; 2 | 3 | class VerticalLine extends StatelessWidget { 4 | final Color dividerColor; 5 | final double height; 6 | final double width; 7 | 8 | VerticalLine({this.dividerColor, this.height, this.width}); 9 | 10 | @override 11 | Widget build(BuildContext context) { 12 | var of = Theme.of(context); 13 | return Container( 14 | width: width ?? double.infinity, 15 | color: dividerColor ?? of.dividerColor, 16 | height: height ?? 0.5, 17 | ); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /res/values/strings_en.arb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangruiyu/flutter_cw_open/5eb5e3bf6f7e2c35dd2dd7957367fc833467b084/res/values/strings_en.arb --------------------------------------------------------------------------------