├── .gitignore
├── .metadata
├── README.md
├── android
├── .gitignore
├── app
│ ├── build.gradle
│ └── src
│ │ ├── debug
│ │ └── AndroidManifest.xml
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── example
│ │ │ │ └── flutter_app
│ │ │ │ ├── MainActivity.java
│ │ │ │ ├── MyApp.java
│ │ │ │ └── RsaAndBase64
│ │ │ │ ├── RSAUtils.java
│ │ │ │ └── RsaAndBase64.java
│ │ └── res
│ │ │ ├── drawable
│ │ │ └── launch_background.xml
│ │ │ ├── mipmap-hdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-mdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── launch_image.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ └── ic_launcher.png
│ │ │ └── values
│ │ │ └── styles.xml
│ │ └── profile
│ │ └── AndroidManifest.xml
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
└── settings.gradle
├── app.apk
├── assets
└── images
│ ├── 2.0x
│ ├── ico_account.png
│ ├── ico_homepage_clock.png
│ ├── ico_homepage_jifen_btn.png
│ ├── ico_homepage_qiandao_btn.png
│ ├── ico_homepage_xinfeng.png
│ ├── ico_kefu_btn.png
│ ├── ico_loading_bg.png
│ ├── ico_login_bg.png
│ ├── ico_login_close.png
│ ├── ico_minepage_class.png
│ ├── ico_minepage_item_arrow.png
│ ├── ico_minepage_jifen.png
│ ├── ico_minepage_shezhi.png
│ ├── ico_minepage_shouchang.png
│ ├── ico_minepage_xiaoxi.png
│ ├── ico_minepage_yijian.png
│ ├── ico_person_clerk.png
│ ├── ico_person_doctor.png
│ ├── ico_person_normal.png
│ ├── ico_person_nurse.png
│ ├── ico_person_physician.png
│ ├── ico_person_sales.png
│ ├── ico_pwd.png
│ ├── ico_qiandao_bg.png
│ ├── ico_tabar_class_normal.png
│ ├── ico_tabar_class_pressed.png
│ ├── ico_tabar_home_normal.png
│ ├── ico_tabar_home_pressed.png
│ ├── ico_tabar_mine_normal.png
│ ├── ico_tabar_mine_pressed.png
│ ├── ico_tabar_prefecture_normal.png
│ └── ico_tabar_prefecture_pressed.png
│ ├── 3.0x
│ ├── ico_account.png
│ ├── ico_homepage_clock.png
│ ├── ico_homepage_jifen_btn.png
│ ├── ico_homepage_qiandao_btn.png
│ ├── ico_homepage_xinfeng.png
│ ├── ico_kefu_btn.png
│ ├── ico_loading_bg.png
│ ├── ico_login_bg.png
│ ├── ico_login_close.png
│ ├── ico_minepage_class.png
│ ├── ico_minepage_item_arrow.png
│ ├── ico_minepage_jifen.png
│ ├── ico_minepage_shezhi.png
│ ├── ico_minepage_shouchang.png
│ ├── ico_minepage_xiaoxi.png
│ ├── ico_minepage_yijian.png
│ ├── ico_person_clerk.png
│ ├── ico_person_doctor.png
│ ├── ico_person_normal.png
│ ├── ico_person_nurse.png
│ ├── ico_person_physician.png
│ ├── ico_person_sales.png
│ ├── ico_pwd.png
│ ├── ico_qiandao_bg.png
│ ├── ico_tabar_class_normal.png
│ ├── ico_tabar_class_pressed.png
│ ├── ico_tabar_home_normal.png
│ ├── ico_tabar_home_pressed.png
│ ├── ico_tabar_mine_normal.png
│ ├── ico_tabar_mine_pressed.png
│ ├── ico_tabar_prefecture_normal.png
│ └── ico_tabar_prefecture_pressed.png
│ ├── ic_arrow_right.png
│ ├── ic_back_black.png
│ ├── ico_account.png
│ ├── ico_back.png
│ ├── ico_dengji_bg.png
│ ├── ico_dengji_bg_short.png
│ ├── ico_homepage_clock.png
│ ├── ico_homepage_comment_gray.png
│ ├── ico_homepage_eye_gray.png
│ ├── ico_homepage_jifen_btn.png
│ ├── ico_homepage_qiandao_btn.png
│ ├── ico_homepage_xinfeng.png
│ ├── ico_kefu_btn.png
│ ├── ico_loading_bg.png
│ ├── ico_login_bg.png
│ ├── ico_login_close.png
│ ├── ico_minepage_class.png
│ ├── ico_minepage_item_arrow.png
│ ├── ico_minepage_jifen.png
│ ├── ico_minepage_shezhi.png
│ ├── ico_minepage_shouchang.png
│ ├── ico_minepage_xiaoxi.png
│ ├── ico_minepage_yijian.png
│ ├── ico_modal_close_btn.png
│ ├── ico_person_clerk.png
│ ├── ico_person_doctor.png
│ ├── ico_person_normal.png
│ ├── ico_person_nurse.png
│ ├── ico_person_physician.png
│ ├── ico_person_sales.png
│ ├── ico_pwd.png
│ ├── ico_qiandao_bg.png
│ ├── ico_qiandao_tag.png
│ ├── ico_qiandao_yiqian_gou.png
│ ├── ico_sex_nan.png
│ ├── ico_sex_nv.png
│ ├── ico_tabar_class_normal.png
│ ├── ico_tabar_class_pressed.png
│ ├── ico_tabar_home_normal.png
│ ├── ico_tabar_home_pressed.png
│ ├── ico_tabar_mine_normal.png
│ ├── ico_tabar_mine_pressed.png
│ ├── ico_tabar_prefecture_normal.png
│ ├── ico_tabar_prefecture_pressed.png
│ ├── loading.gif
│ └── wechat_friends.png
├── flutter_1.png
├── flutter_2.png
├── flutter_3.png
├── flutter_4.png
├── ios
├── .gitignore
├── Flutter
│ ├── AppFrameworkInfo.plist
│ ├── Debug.xcconfig
│ └── Release.xcconfig
├── Podfile
├── Podfile.lock
├── Runner.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ └── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── Runner.xcscheme
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
└── Runner
│ ├── AppDelegate.h
│ ├── AppDelegate.m
│ ├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ ├── Contents.json
│ │ ├── icon-1024.png
│ │ ├── icon-20@2x.png
│ │ ├── icon-20@3x.png
│ │ ├── icon-29@2x.png
│ │ ├── icon-29@3x.png
│ │ ├── icon-40@2x.png
│ │ ├── icon-40@3x.png
│ │ ├── icon-60@2x.png
│ │ └── icon-60@3x.png
│ ├── Contents.json
│ ├── LaunchImage.imageset
│ │ ├── Contents.json
│ │ ├── README.md
│ │ ├── splash_logo_one.png
│ │ ├── splash_logo_one@2x.png
│ │ └── splash_logo_one@3x.png
│ └── splash_logo.imageset
│ │ ├── Contents.json
│ │ ├── splash_logo.png
│ │ ├── splash_logo@2x.png
│ │ └── splash_logo@3x.png
│ ├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
│ ├── Info.plist
│ ├── RsaAndBase64
│ ├── RSAEncryptor.h
│ ├── RSAEncryptor.m
│ ├── RsaAndBase64.h
│ └── RsaAndBase64.m
│ └── main.m
├── lib
├── app.dart
├── global_store
│ ├── action.dart
│ ├── reducer.dart
│ ├── state.dart
│ └── store.dart
├── main.dart
├── models
│ ├── entity_factory.dart
│ ├── home
│ │ ├── material_entity.dart
│ │ └── plate_entity.dart
│ ├── index
│ │ └── page_component.dart
│ ├── mine
│ │ └── collect_entity.dart
│ └── user_info_entity.dart
├── res
│ ├── colors.dart
│ ├── dimens.dart
│ ├── gaps.dart
│ ├── resources.dart
│ └── styles.dart
├── routes
│ ├── class_module
│ │ └── class_page
│ │ │ ├── action.dart
│ │ │ ├── effect.dart
│ │ │ ├── page.dart
│ │ │ ├── reducer.dart
│ │ │ ├── state.dart
│ │ │ └── view.dart
│ ├── home_module
│ │ ├── home_page
│ │ │ ├── action.dart
│ │ │ ├── effect.dart
│ │ │ ├── page.dart
│ │ │ ├── reducer.dart
│ │ │ ├── state.dart
│ │ │ ├── view.dart
│ │ │ └── widget
│ │ │ │ ├── home_page_item.dart
│ │ │ │ └── home_page_list_tile.dart
│ │ ├── news_detail
│ │ │ ├── action.dart
│ │ │ ├── effect.dart
│ │ │ ├── page.dart
│ │ │ ├── reducer.dart
│ │ │ ├── state.dart
│ │ │ └── view.dart
│ │ └── qiandao_alert.dart
│ ├── index
│ │ ├── action.dart
│ │ ├── effect.dart
│ │ ├── page.dart
│ │ ├── reducer.dart
│ │ ├── state.dart
│ │ └── view.dart
│ ├── login_page
│ │ ├── action.dart
│ │ ├── auth_button
│ │ │ ├── action.dart
│ │ │ ├── component.dart
│ │ │ ├── effect.dart
│ │ │ ├── reducer.dart
│ │ │ ├── state.dart
│ │ │ └── view.dart
│ │ ├── effect.dart
│ │ ├── page.dart
│ │ ├── reducer.dart
│ │ ├── state.dart
│ │ └── view.dart
│ ├── mine_module
│ │ ├── collect_page
│ │ │ ├── action.dart
│ │ │ ├── effect.dart
│ │ │ ├── page.dart
│ │ │ ├── reducer.dart
│ │ │ ├── state.dart
│ │ │ └── view.dart
│ │ ├── exit_dialog.dart
│ │ ├── mine_page
│ │ │ ├── action.dart
│ │ │ ├── effect.dart
│ │ │ ├── page.dart
│ │ │ ├── reducer.dart
│ │ │ ├── state.dart
│ │ │ └── view.dart
│ │ └── setting_page
│ │ │ ├── action.dart
│ │ │ ├── effect.dart
│ │ │ ├── page.dart
│ │ │ ├── reducer.dart
│ │ │ ├── state.dart
│ │ │ └── view.dart
│ └── prefecture_module
│ │ └── prefecture_page
│ │ ├── action.dart
│ │ ├── effect.dart
│ │ ├── page.dart
│ │ ├── reducer.dart
│ │ ├── state.dart
│ │ └── view.dart
├── utils
│ ├── common.dart
│ ├── data_tool.dart
│ ├── double_tap_back_exit_app.dart
│ ├── i18n.dart
│ ├── image_utils.dart
│ ├── log_utils.dart
│ ├── native_method.dart
│ ├── net
│ │ ├── base_entity.dart
│ │ ├── dio_utils.dart
│ │ ├── error_handle.dart
│ │ ├── http_api.dart
│ │ ├── intercept.dart
│ │ └── net.dart
│ ├── progress.dart
│ ├── routes
│ │ ├── 404.dart
│ │ ├── application.dart
│ │ ├── fluro_navigator.dart
│ │ ├── router_init.dart
│ │ ├── routers.dart
│ │ └── webview_page.dart
│ ├── screen_util.dart
│ ├── theme_utils.dart
│ └── toast.dart
└── widgets
│ ├── app_bar.dart
│ ├── keep_alive_widget.dart
│ ├── list_subtitle.dart
│ ├── load_image.dart
│ ├── state_layout.dart
│ └── top_header.dart
├── pubspec.lock
└── pubspec.yaml
/.gitignore:
--------------------------------------------------------------------------------
1 | # Miscellaneous
2 | *.class
3 | *.log
4 | *.pyc
5 | *.swp
6 | .DS_Store
7 | .atom/
8 | .buildlog/
9 | .history
10 | .svn/
11 |
12 | # IntelliJ related
13 | *.iml
14 | *.ipr
15 | *.iws
16 | .idea/
17 |
18 | # The .vscode folder contains launch configuration and tasks you configure in
19 | # VS Code which you may wish to be included in version control, so this line
20 | # is commented out by default.
21 | #.vscode/
22 |
23 | # Flutter/Dart/Pub related
24 | **/doc/api/
25 | .dart_tool/
26 | .flutter-plugins
27 | .flutter-plugins-dependencies
28 | .packages
29 | .pub-cache/
30 | .pub/
31 | /build/
32 |
33 | # Web related
34 | lib/generated_plugin_registrant.dart
35 |
36 | # Exceptions to above rules.
37 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
38 |
--------------------------------------------------------------------------------
/.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: 27321ebbad34b0a3fafe99fac037102196d655ff
8 | channel: stable
9 |
10 | project_type: app
11 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # fish-redux-demo
2 |
3 | 一个基于fish-redux的Flutter脚手架,包含基本的屏幕适配、全局toast提示、网络请求封装、路由框架集成、网络图片缓存,
4 | 实现了在fish-redux框架下fluro路由框架的集成、演示了Flutter和WebView的双向通信,实现了在fish-redux模式下的页面跳转
5 | 传参以及实现AutomaticKeepAliveClientMixin,以及实现了父组件和子组件局部数据和页面之间全局数据共享逻辑,是一个开箱即用不可多得的Flutter项目脚手架。
6 | (出于业务安全考虑,Android和iOS原生端的加密公钥已经被抹掉请直接下载[Android release 安装包](https://github.com/bozaigao/fish-redux-demo/blob/master/app.apk)进行体验,账号:11211110085 密码:123456)
7 |
8 | ## 效果图如下
9 | 
10 | 
11 | 
12 | 
13 |
14 | Taro适配rn、h5、微信小程序友情链接[Taro-demo](https://github.com/bozaigao/Taro-demo)
--------------------------------------------------------------------------------
/android/.gitignore:
--------------------------------------------------------------------------------
1 | gradle-wrapper.jar
2 | /.gradle
3 | /captures/
4 | /gradlew
5 | /gradlew.bat
6 | /local.properties
7 | GeneratedPluginRegistrant.java
8 |
--------------------------------------------------------------------------------
/android/app/build.gradle:
--------------------------------------------------------------------------------
1 | def localProperties = new Properties()
2 | def localPropertiesFile = rootProject.file('local.properties')
3 | if (localPropertiesFile.exists()) {
4 | localPropertiesFile.withReader('UTF-8') { reader ->
5 | localProperties.load(reader)
6 | }
7 | }
8 |
9 | def flutterRoot = localProperties.getProperty('flutter.sdk')
10 | if (flutterRoot == null) {
11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
12 | }
13 |
14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
15 | if (flutterVersionCode == null) {
16 | flutterVersionCode = '1'
17 | }
18 |
19 | def flutterVersionName = localProperties.getProperty('flutter.versionName')
20 | if (flutterVersionName == null) {
21 | flutterVersionName = '1.0'
22 | }
23 |
24 | apply plugin: 'com.android.application'
25 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
26 |
27 | android {
28 | compileSdkVersion 28
29 |
30 | lintOptions {
31 | disable 'InvalidPackage'
32 | }
33 |
34 | defaultConfig {
35 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
36 | applicationId "com.example.flutter_app"
37 | minSdkVersion 16
38 | targetSdkVersion 28
39 | versionCode flutterVersionCode.toInteger()
40 | versionName flutterVersionName
41 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
42 | }
43 |
44 | buildTypes {
45 | release {
46 | // TODO: Add your own signing config for the release build.
47 | // Signing with the debug keys for now, so `flutter run --release` works.
48 | signingConfig signingConfigs.debug
49 | }
50 | }
51 | }
52 |
53 | flutter {
54 | source '../..'
55 | }
56 |
57 | dependencies {
58 | testImplementation 'junit:junit:4.12'
59 | androidTestImplementation 'androidx.test:runner:1.1.1'
60 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
61 | }
62 |
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
8 |
9 |
10 |
11 |
12 |
13 |
18 |
26 |
29 |
30 |
31 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
43 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/example/flutter_app/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.example.flutter_app;
2 |
3 | import androidx.annotation.NonNull;
4 |
5 | import com.example.flutter_app.RsaAndBase64.RsaAndBase64;
6 |
7 | import io.flutter.embedding.android.FlutterActivity;
8 | import io.flutter.embedding.engine.FlutterEngine;
9 | import io.flutter.plugins.GeneratedPluginRegistrant;
10 |
11 | public class MainActivity extends FlutterActivity {
12 | @Override
13 | public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
14 | GeneratedPluginRegistrant.registerWith(flutterEngine);
15 | //rsa加密
16 | RsaAndBase64.registerWith(flutterEngine);
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/example/flutter_app/MyApp.java:
--------------------------------------------------------------------------------
1 | package com.example.flutter_app;
2 |
3 | import io.flutter.app.FlutterApplication;
4 |
5 | /**
6 | * @filename MyApp.java
7 | * @author 何晏波
8 | * @QQ 1054539528
9 | * @date 2020-01-16
10 | * @Description: FlutterApplication
11 | */
12 | public class MyApp extends FlutterApplication {
13 |
14 | @Override
15 | public void onCreate() {
16 | super.onCreate();
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/example/flutter_app/RsaAndBase64/RsaAndBase64.java:
--------------------------------------------------------------------------------
1 | package com.example.flutter_app.RsaAndBase64;
2 |
3 | import android.util.Base64;
4 | import android.util.Log;
5 |
6 | import java.security.PublicKey;
7 | import java.util.regex.Matcher;
8 | import java.util.regex.Pattern;
9 |
10 | import javax.crypto.Cipher;
11 |
12 | import io.flutter.embedding.engine.FlutterEngine;
13 | import io.flutter.plugin.common.MethodCall;
14 | import io.flutter.plugin.common.MethodChannel;
15 |
16 | /**
17 | * @author 何晏波
18 | * @filename RsaAndBase64.java
19 | * @QQ 1054539528
20 | * @date 2018/8/11
21 | * @Description: 加密模块
22 | */
23 | public class RsaAndBase64 implements MethodChannel.MethodCallHandler {
24 | public static final String CHANNEL = "www.guigug.com/rsa_and_base64";
25 | static MethodChannel channel;
26 | private final String ECB_PKCS1_PADDING = "RSA/ECB/PKCS1Padding";//加密填充方式
27 | //rsa加密公钥
28 | //处于业务安全考虑,该公钥已被隐藏
29 | private final String public_key = "xxx";
30 |
31 | public static void registerWith(FlutterEngine flutterEngine) {
32 | channel = new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL);
33 | RsaAndBase64 instance = new RsaAndBase64();
34 | //setMethodCallHandler在此通道上接收方法调用的回调
35 | channel.setMethodCallHandler(instance);
36 | }
37 |
38 |
39 | private String rsaAndBase64Encode(String plaint) {
40 | try {
41 | // 得到公钥
42 | PublicKey publicKey = RSAUtils.loadPublicKey(public_key);
43 | // 加密数据
44 | Cipher cp = Cipher.getInstance(ECB_PKCS1_PADDING);
45 | cp.init(Cipher.ENCRYPT_MODE, publicKey);
46 | Log.e("加密后的数据", replaceBlank(new String(Base64.encode(cp.doFinal(plaint.getBytes()), Base64.DEFAULT))));
47 | return replaceBlank(new String(Base64.encode(cp.doFinal(plaint.getBytes()), Base64.DEFAULT)));
48 | } catch (Exception e) {
49 | e.printStackTrace();
50 | return "";
51 | }
52 | }
53 |
54 | private void decryptByPublicKey(String plaint) throws Exception {
55 | Log.e("TAG", new String(Base64.decode(plaint, Base64.DEFAULT)));
56 | }
57 |
58 |
59 | private String replaceBlank(String str) {
60 | String dest = "";
61 | if (str != null) {
62 | Pattern p = Pattern.compile("\\s*|\t|\r|\n");
63 | Matcher m = p.matcher(str);
64 | dest = m.replaceAll("");
65 | }
66 | return dest;
67 | }
68 |
69 | @Override
70 | public void onMethodCall(MethodCall call, MethodChannel.Result result) {
71 | //接收来自flutter的指令encode
72 | if (call.method.equals("encode")) {
73 | //返回给flutter的参数
74 | result.success(rsaAndBase64Encode(call.argument("plaint")));
75 | }
76 | }
77 | }
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | -
8 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/launch_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/android/app/src/main/res/mipmap-xhdpi/launch_image.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
--------------------------------------------------------------------------------
/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | repositories {
3 | google()
4 | jcenter()
5 | }
6 |
7 | dependencies {
8 | classpath 'com.android.tools.build:gradle:3.5.0'
9 | }
10 | }
11 |
12 | allprojects {
13 | repositories {
14 | google()
15 | jcenter()
16 | }
17 | }
18 |
19 | rootProject.buildDir = '../build'
20 | subprojects {
21 | project.buildDir = "${rootProject.buildDir}/${project.name}"
22 | }
23 | subprojects {
24 | project.evaluationDependsOn(':app')
25 | }
26 |
27 | task clean(type: Delete) {
28 | delete rootProject.buildDir
29 | }
30 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 | android.enableR8=true
3 | android.useAndroidX=true
4 | android.enableJetifier=true
5 |
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Jun 23 08:50:38 CEST 2017
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
7 |
--------------------------------------------------------------------------------
/android/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
4 |
5 | def plugins = new Properties()
6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
7 | if (pluginsFile.exists()) {
8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
9 | }
10 |
11 | plugins.each { name, path ->
12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
13 | include ":$name"
14 | project(":$name").projectDir = pluginDirectory
15 | }
16 |
--------------------------------------------------------------------------------
/app.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/app.apk
--------------------------------------------------------------------------------
/assets/images/2.0x/ico_account.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/2.0x/ico_account.png
--------------------------------------------------------------------------------
/assets/images/2.0x/ico_homepage_clock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/2.0x/ico_homepage_clock.png
--------------------------------------------------------------------------------
/assets/images/2.0x/ico_homepage_jifen_btn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/2.0x/ico_homepage_jifen_btn.png
--------------------------------------------------------------------------------
/assets/images/2.0x/ico_homepage_qiandao_btn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/2.0x/ico_homepage_qiandao_btn.png
--------------------------------------------------------------------------------
/assets/images/2.0x/ico_homepage_xinfeng.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/2.0x/ico_homepage_xinfeng.png
--------------------------------------------------------------------------------
/assets/images/2.0x/ico_kefu_btn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/2.0x/ico_kefu_btn.png
--------------------------------------------------------------------------------
/assets/images/2.0x/ico_loading_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/2.0x/ico_loading_bg.png
--------------------------------------------------------------------------------
/assets/images/2.0x/ico_login_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/2.0x/ico_login_bg.png
--------------------------------------------------------------------------------
/assets/images/2.0x/ico_login_close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/2.0x/ico_login_close.png
--------------------------------------------------------------------------------
/assets/images/2.0x/ico_minepage_class.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/2.0x/ico_minepage_class.png
--------------------------------------------------------------------------------
/assets/images/2.0x/ico_minepage_item_arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/2.0x/ico_minepage_item_arrow.png
--------------------------------------------------------------------------------
/assets/images/2.0x/ico_minepage_jifen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/2.0x/ico_minepage_jifen.png
--------------------------------------------------------------------------------
/assets/images/2.0x/ico_minepage_shezhi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/2.0x/ico_minepage_shezhi.png
--------------------------------------------------------------------------------
/assets/images/2.0x/ico_minepage_shouchang.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/2.0x/ico_minepage_shouchang.png
--------------------------------------------------------------------------------
/assets/images/2.0x/ico_minepage_xiaoxi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/2.0x/ico_minepage_xiaoxi.png
--------------------------------------------------------------------------------
/assets/images/2.0x/ico_minepage_yijian.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/2.0x/ico_minepage_yijian.png
--------------------------------------------------------------------------------
/assets/images/2.0x/ico_person_clerk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/2.0x/ico_person_clerk.png
--------------------------------------------------------------------------------
/assets/images/2.0x/ico_person_doctor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/2.0x/ico_person_doctor.png
--------------------------------------------------------------------------------
/assets/images/2.0x/ico_person_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/2.0x/ico_person_normal.png
--------------------------------------------------------------------------------
/assets/images/2.0x/ico_person_nurse.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/2.0x/ico_person_nurse.png
--------------------------------------------------------------------------------
/assets/images/2.0x/ico_person_physician.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/2.0x/ico_person_physician.png
--------------------------------------------------------------------------------
/assets/images/2.0x/ico_person_sales.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/2.0x/ico_person_sales.png
--------------------------------------------------------------------------------
/assets/images/2.0x/ico_pwd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/2.0x/ico_pwd.png
--------------------------------------------------------------------------------
/assets/images/2.0x/ico_qiandao_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/2.0x/ico_qiandao_bg.png
--------------------------------------------------------------------------------
/assets/images/2.0x/ico_tabar_class_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/2.0x/ico_tabar_class_normal.png
--------------------------------------------------------------------------------
/assets/images/2.0x/ico_tabar_class_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/2.0x/ico_tabar_class_pressed.png
--------------------------------------------------------------------------------
/assets/images/2.0x/ico_tabar_home_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/2.0x/ico_tabar_home_normal.png
--------------------------------------------------------------------------------
/assets/images/2.0x/ico_tabar_home_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/2.0x/ico_tabar_home_pressed.png
--------------------------------------------------------------------------------
/assets/images/2.0x/ico_tabar_mine_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/2.0x/ico_tabar_mine_normal.png
--------------------------------------------------------------------------------
/assets/images/2.0x/ico_tabar_mine_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/2.0x/ico_tabar_mine_pressed.png
--------------------------------------------------------------------------------
/assets/images/2.0x/ico_tabar_prefecture_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/2.0x/ico_tabar_prefecture_normal.png
--------------------------------------------------------------------------------
/assets/images/2.0x/ico_tabar_prefecture_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/2.0x/ico_tabar_prefecture_pressed.png
--------------------------------------------------------------------------------
/assets/images/3.0x/ico_account.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/3.0x/ico_account.png
--------------------------------------------------------------------------------
/assets/images/3.0x/ico_homepage_clock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/3.0x/ico_homepage_clock.png
--------------------------------------------------------------------------------
/assets/images/3.0x/ico_homepage_jifen_btn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/3.0x/ico_homepage_jifen_btn.png
--------------------------------------------------------------------------------
/assets/images/3.0x/ico_homepage_qiandao_btn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/3.0x/ico_homepage_qiandao_btn.png
--------------------------------------------------------------------------------
/assets/images/3.0x/ico_homepage_xinfeng.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/3.0x/ico_homepage_xinfeng.png
--------------------------------------------------------------------------------
/assets/images/3.0x/ico_kefu_btn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/3.0x/ico_kefu_btn.png
--------------------------------------------------------------------------------
/assets/images/3.0x/ico_loading_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/3.0x/ico_loading_bg.png
--------------------------------------------------------------------------------
/assets/images/3.0x/ico_login_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/3.0x/ico_login_bg.png
--------------------------------------------------------------------------------
/assets/images/3.0x/ico_login_close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/3.0x/ico_login_close.png
--------------------------------------------------------------------------------
/assets/images/3.0x/ico_minepage_class.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/3.0x/ico_minepage_class.png
--------------------------------------------------------------------------------
/assets/images/3.0x/ico_minepage_item_arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/3.0x/ico_minepage_item_arrow.png
--------------------------------------------------------------------------------
/assets/images/3.0x/ico_minepage_jifen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/3.0x/ico_minepage_jifen.png
--------------------------------------------------------------------------------
/assets/images/3.0x/ico_minepage_shezhi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/3.0x/ico_minepage_shezhi.png
--------------------------------------------------------------------------------
/assets/images/3.0x/ico_minepage_shouchang.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/3.0x/ico_minepage_shouchang.png
--------------------------------------------------------------------------------
/assets/images/3.0x/ico_minepage_xiaoxi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/3.0x/ico_minepage_xiaoxi.png
--------------------------------------------------------------------------------
/assets/images/3.0x/ico_minepage_yijian.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/3.0x/ico_minepage_yijian.png
--------------------------------------------------------------------------------
/assets/images/3.0x/ico_person_clerk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/3.0x/ico_person_clerk.png
--------------------------------------------------------------------------------
/assets/images/3.0x/ico_person_doctor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/3.0x/ico_person_doctor.png
--------------------------------------------------------------------------------
/assets/images/3.0x/ico_person_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/3.0x/ico_person_normal.png
--------------------------------------------------------------------------------
/assets/images/3.0x/ico_person_nurse.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/3.0x/ico_person_nurse.png
--------------------------------------------------------------------------------
/assets/images/3.0x/ico_person_physician.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/3.0x/ico_person_physician.png
--------------------------------------------------------------------------------
/assets/images/3.0x/ico_person_sales.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/3.0x/ico_person_sales.png
--------------------------------------------------------------------------------
/assets/images/3.0x/ico_pwd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/3.0x/ico_pwd.png
--------------------------------------------------------------------------------
/assets/images/3.0x/ico_qiandao_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/3.0x/ico_qiandao_bg.png
--------------------------------------------------------------------------------
/assets/images/3.0x/ico_tabar_class_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/3.0x/ico_tabar_class_normal.png
--------------------------------------------------------------------------------
/assets/images/3.0x/ico_tabar_class_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/3.0x/ico_tabar_class_pressed.png
--------------------------------------------------------------------------------
/assets/images/3.0x/ico_tabar_home_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/3.0x/ico_tabar_home_normal.png
--------------------------------------------------------------------------------
/assets/images/3.0x/ico_tabar_home_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/3.0x/ico_tabar_home_pressed.png
--------------------------------------------------------------------------------
/assets/images/3.0x/ico_tabar_mine_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/3.0x/ico_tabar_mine_normal.png
--------------------------------------------------------------------------------
/assets/images/3.0x/ico_tabar_mine_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/3.0x/ico_tabar_mine_pressed.png
--------------------------------------------------------------------------------
/assets/images/3.0x/ico_tabar_prefecture_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/3.0x/ico_tabar_prefecture_normal.png
--------------------------------------------------------------------------------
/assets/images/3.0x/ico_tabar_prefecture_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/3.0x/ico_tabar_prefecture_pressed.png
--------------------------------------------------------------------------------
/assets/images/ic_arrow_right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ic_arrow_right.png
--------------------------------------------------------------------------------
/assets/images/ic_back_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ic_back_black.png
--------------------------------------------------------------------------------
/assets/images/ico_account.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_account.png
--------------------------------------------------------------------------------
/assets/images/ico_back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_back.png
--------------------------------------------------------------------------------
/assets/images/ico_dengji_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_dengji_bg.png
--------------------------------------------------------------------------------
/assets/images/ico_dengji_bg_short.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_dengji_bg_short.png
--------------------------------------------------------------------------------
/assets/images/ico_homepage_clock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_homepage_clock.png
--------------------------------------------------------------------------------
/assets/images/ico_homepage_comment_gray.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_homepage_comment_gray.png
--------------------------------------------------------------------------------
/assets/images/ico_homepage_eye_gray.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_homepage_eye_gray.png
--------------------------------------------------------------------------------
/assets/images/ico_homepage_jifen_btn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_homepage_jifen_btn.png
--------------------------------------------------------------------------------
/assets/images/ico_homepage_qiandao_btn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_homepage_qiandao_btn.png
--------------------------------------------------------------------------------
/assets/images/ico_homepage_xinfeng.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_homepage_xinfeng.png
--------------------------------------------------------------------------------
/assets/images/ico_kefu_btn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_kefu_btn.png
--------------------------------------------------------------------------------
/assets/images/ico_loading_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_loading_bg.png
--------------------------------------------------------------------------------
/assets/images/ico_login_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_login_bg.png
--------------------------------------------------------------------------------
/assets/images/ico_login_close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_login_close.png
--------------------------------------------------------------------------------
/assets/images/ico_minepage_class.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_minepage_class.png
--------------------------------------------------------------------------------
/assets/images/ico_minepage_item_arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_minepage_item_arrow.png
--------------------------------------------------------------------------------
/assets/images/ico_minepage_jifen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_minepage_jifen.png
--------------------------------------------------------------------------------
/assets/images/ico_minepage_shezhi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_minepage_shezhi.png
--------------------------------------------------------------------------------
/assets/images/ico_minepage_shouchang.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_minepage_shouchang.png
--------------------------------------------------------------------------------
/assets/images/ico_minepage_xiaoxi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_minepage_xiaoxi.png
--------------------------------------------------------------------------------
/assets/images/ico_minepage_yijian.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_minepage_yijian.png
--------------------------------------------------------------------------------
/assets/images/ico_modal_close_btn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_modal_close_btn.png
--------------------------------------------------------------------------------
/assets/images/ico_person_clerk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_person_clerk.png
--------------------------------------------------------------------------------
/assets/images/ico_person_doctor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_person_doctor.png
--------------------------------------------------------------------------------
/assets/images/ico_person_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_person_normal.png
--------------------------------------------------------------------------------
/assets/images/ico_person_nurse.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_person_nurse.png
--------------------------------------------------------------------------------
/assets/images/ico_person_physician.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_person_physician.png
--------------------------------------------------------------------------------
/assets/images/ico_person_sales.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_person_sales.png
--------------------------------------------------------------------------------
/assets/images/ico_pwd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_pwd.png
--------------------------------------------------------------------------------
/assets/images/ico_qiandao_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_qiandao_bg.png
--------------------------------------------------------------------------------
/assets/images/ico_qiandao_tag.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_qiandao_tag.png
--------------------------------------------------------------------------------
/assets/images/ico_qiandao_yiqian_gou.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_qiandao_yiqian_gou.png
--------------------------------------------------------------------------------
/assets/images/ico_sex_nan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_sex_nan.png
--------------------------------------------------------------------------------
/assets/images/ico_sex_nv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_sex_nv.png
--------------------------------------------------------------------------------
/assets/images/ico_tabar_class_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_tabar_class_normal.png
--------------------------------------------------------------------------------
/assets/images/ico_tabar_class_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_tabar_class_pressed.png
--------------------------------------------------------------------------------
/assets/images/ico_tabar_home_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_tabar_home_normal.png
--------------------------------------------------------------------------------
/assets/images/ico_tabar_home_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_tabar_home_pressed.png
--------------------------------------------------------------------------------
/assets/images/ico_tabar_mine_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_tabar_mine_normal.png
--------------------------------------------------------------------------------
/assets/images/ico_tabar_mine_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_tabar_mine_pressed.png
--------------------------------------------------------------------------------
/assets/images/ico_tabar_prefecture_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_tabar_prefecture_normal.png
--------------------------------------------------------------------------------
/assets/images/ico_tabar_prefecture_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/ico_tabar_prefecture_pressed.png
--------------------------------------------------------------------------------
/assets/images/loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/loading.gif
--------------------------------------------------------------------------------
/assets/images/wechat_friends.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/assets/images/wechat_friends.png
--------------------------------------------------------------------------------
/flutter_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/flutter_1.png
--------------------------------------------------------------------------------
/flutter_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/flutter_2.png
--------------------------------------------------------------------------------
/flutter_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/flutter_3.png
--------------------------------------------------------------------------------
/flutter_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/flutter_4.png
--------------------------------------------------------------------------------
/ios/.gitignore:
--------------------------------------------------------------------------------
1 | *.mode1v3
2 | *.mode2v3
3 | *.moved-aside
4 | *.pbxuser
5 | *.perspectivev3
6 | **/*sync/
7 | .sconsign.dblite
8 | .tags*
9 | **/.vagrant/
10 | **/DerivedData/
11 | Icon?
12 | **/Pods/
13 | **/.symlinks/
14 | profile
15 | xcuserdata
16 | **/.generated/
17 | Flutter/App.framework
18 | Flutter/Flutter.framework
19 | Flutter/Flutter.podspec
20 | Flutter/Generated.xcconfig
21 | Flutter/app.flx
22 | Flutter/app.zip
23 | Flutter/flutter_assets/
24 | Flutter/flutter_export_environment.sh
25 | ServiceDefinitions.json
26 | Runner/GeneratedPluginRegistrant.*
27 |
28 | # Exceptions to above rules.
29 | !default.mode1v3
30 | !default.mode2v3
31 | !default.pbxuser
32 | !default.perspectivev3
33 |
--------------------------------------------------------------------------------
/ios/Flutter/AppFrameworkInfo.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | App
9 | CFBundleIdentifier
10 | io.flutter.flutter.app
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | App
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | MinimumOSVersion
24 | 8.0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment this line to define a global platform for your project
2 | # platform :ios, '9.0'
3 |
4 | # CocoaPods analytics sends network stats synchronously affecting flutter build latency.
5 | ENV['COCOAPODS_DISABLE_STATS'] = 'true'
6 |
7 | project 'Runner', {
8 | 'Debug' => :debug,
9 | 'Profile' => :release,
10 | 'Release' => :release,
11 | }
12 |
13 | def parse_KV_file(file, separator='=')
14 | file_abs_path = File.expand_path(file)
15 | if !File.exists? file_abs_path
16 | return [];
17 | end
18 | generated_key_values = {}
19 | skip_line_start_symbols = ["#", "/"]
20 | File.foreach(file_abs_path) do |line|
21 | next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ }
22 | plugin = line.split(pattern=separator)
23 | if plugin.length == 2
24 | podname = plugin[0].strip()
25 | path = plugin[1].strip()
26 | podpath = File.expand_path("#{path}", file_abs_path)
27 | generated_key_values[podname] = podpath
28 | else
29 | puts "Invalid plugin specification: #{line}"
30 | end
31 | end
32 | generated_key_values
33 | end
34 |
35 | target 'Runner' do
36 | # Flutter Pod
37 |
38 | copied_flutter_dir = File.join(__dir__, 'Flutter')
39 | copied_framework_path = File.join(copied_flutter_dir, 'Flutter.framework')
40 | copied_podspec_path = File.join(copied_flutter_dir, 'Flutter.podspec')
41 | unless File.exist?(copied_framework_path) && File.exist?(copied_podspec_path)
42 | # Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet.
43 | # That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration.
44 | # CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist.
45 |
46 | generated_xcode_build_settings_path = File.join(copied_flutter_dir, 'Generated.xcconfig')
47 | unless File.exist?(generated_xcode_build_settings_path)
48 | raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first"
49 | end
50 | generated_xcode_build_settings = parse_KV_file(generated_xcode_build_settings_path)
51 | cached_framework_dir = generated_xcode_build_settings['FLUTTER_FRAMEWORK_DIR'];
52 |
53 | unless File.exist?(copied_framework_path)
54 | FileUtils.cp_r(File.join(cached_framework_dir, 'Flutter.framework'), copied_flutter_dir)
55 | end
56 | unless File.exist?(copied_podspec_path)
57 | FileUtils.cp(File.join(cached_framework_dir, 'Flutter.podspec'), copied_flutter_dir)
58 | end
59 | end
60 |
61 | # Keep pod path relative so it can be checked into Podfile.lock.
62 | pod 'Flutter', :path => 'Flutter'
63 |
64 | # Plugin Pods
65 |
66 | # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
67 | # referring to absolute paths on developers' machines.
68 | system('rm -rf .symlinks')
69 | system('mkdir -p .symlinks/plugins')
70 | plugin_pods = parse_KV_file('../.flutter-plugins')
71 | plugin_pods.each do |name, path|
72 | symlink = File.join('.symlinks', 'plugins', name)
73 | File.symlink(path, symlink)
74 | pod name, :path => File.join(symlink, 'ios')
75 | end
76 | end
77 |
78 | # Prevent Cocoapods from embedding a second Flutter framework and causing an error with the new Xcode build system.
79 | install! 'cocoapods', :disable_input_output_paths => true
80 |
81 | post_install do |installer|
82 | installer.pods_project.targets.each do |target|
83 | target.build_configurations.each do |config|
84 | config.build_settings['ENABLE_BITCODE'] = 'NO'
85 | end
86 | end
87 | end
88 |
--------------------------------------------------------------------------------
/ios/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - Flutter (1.0.0)
3 | - fluwx (0.0.1):
4 | - Flutter
5 | - FMDB (2.7.5):
6 | - FMDB/standard (= 2.7.5)
7 | - FMDB/standard (2.7.5)
8 | - path_provider (0.0.1):
9 | - Flutter
10 | - shared_preferences (0.0.1):
11 | - Flutter
12 | - shared_preferences_macos (0.0.1):
13 | - Flutter
14 | - shared_preferences_web (0.0.1):
15 | - Flutter
16 | - sqflite (0.0.1):
17 | - Flutter
18 | - FMDB (~> 2.7.2)
19 | - url_launcher (0.0.1):
20 | - Flutter
21 | - url_launcher_macos (0.0.1):
22 | - Flutter
23 | - url_launcher_web (0.0.1):
24 | - Flutter
25 | - webview_flutter (0.0.1):
26 | - Flutter
27 |
28 | DEPENDENCIES:
29 | - Flutter (from `Flutter`)
30 | - fluwx (from `.symlinks/plugins/fluwx/ios`)
31 | - path_provider (from `.symlinks/plugins/path_provider/ios`)
32 | - shared_preferences (from `.symlinks/plugins/shared_preferences/ios`)
33 | - shared_preferences_macos (from `.symlinks/plugins/shared_preferences_macos/ios`)
34 | - shared_preferences_web (from `.symlinks/plugins/shared_preferences_web/ios`)
35 | - sqflite (from `.symlinks/plugins/sqflite/ios`)
36 | - url_launcher (from `.symlinks/plugins/url_launcher/ios`)
37 | - url_launcher_macos (from `.symlinks/plugins/url_launcher_macos/ios`)
38 | - url_launcher_web (from `.symlinks/plugins/url_launcher_web/ios`)
39 | - webview_flutter (from `.symlinks/plugins/webview_flutter/ios`)
40 |
41 | SPEC REPOS:
42 | trunk:
43 | - FMDB
44 |
45 | EXTERNAL SOURCES:
46 | Flutter:
47 | :path: Flutter
48 | fluwx:
49 | :path: ".symlinks/plugins/fluwx/ios"
50 | path_provider:
51 | :path: ".symlinks/plugins/path_provider/ios"
52 | shared_preferences:
53 | :path: ".symlinks/plugins/shared_preferences/ios"
54 | shared_preferences_macos:
55 | :path: ".symlinks/plugins/shared_preferences_macos/ios"
56 | shared_preferences_web:
57 | :path: ".symlinks/plugins/shared_preferences_web/ios"
58 | sqflite:
59 | :path: ".symlinks/plugins/sqflite/ios"
60 | url_launcher:
61 | :path: ".symlinks/plugins/url_launcher/ios"
62 | url_launcher_macos:
63 | :path: ".symlinks/plugins/url_launcher_macos/ios"
64 | url_launcher_web:
65 | :path: ".symlinks/plugins/url_launcher_web/ios"
66 | webview_flutter:
67 | :path: ".symlinks/plugins/webview_flutter/ios"
68 |
69 | SPEC CHECKSUMS:
70 | Flutter: 0e3d915762c693b495b44d77113d4970485de6ec
71 | fluwx: e46c9ea0278bc6b4a2686dd29ec4ff4eb509e626
72 | FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
73 | path_provider: fb74bd0465e96b594bb3b5088ee4a4e7bb1f2a9d
74 | shared_preferences: 430726339841afefe5142b9c1f50cb6bd7793e01
75 | shared_preferences_macos: f3f29b71ccbb56bf40c9dd6396c9acf15e214087
76 | shared_preferences_web: 141cce0c3ed1a1c5bf2a0e44f52d31eeb66e5ea9
77 | sqflite: 4001a31ff81d210346b500c55b17f4d6c7589dd0
78 | url_launcher: a1c0cc845906122c4784c542523d8cacbded5626
79 | url_launcher_macos: fd7894421cd39320dce5f292fc99ea9270b2a313
80 | url_launcher_web: e5527357f037c87560776e36436bf2b0288b965c
81 | webview_flutter: db3aba222b23e4dc432e0c5882834123dc50ff9f
82 |
83 | PODFILE CHECKSUM: 3dbe063e9c90a5d7c9e4e76e70a821b9e2c1d271
84 |
85 | COCOAPODS: 1.8.4
86 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
39 |
40 |
41 |
42 |
43 |
44 |
54 |
56 |
62 |
63 |
64 |
65 |
66 |
67 |
73 |
75 |
81 |
82 |
83 |
84 |
86 |
87 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner/AppDelegate.h:
--------------------------------------------------------------------------------
1 | #import
2 | #import
3 |
4 | @interface AppDelegate : FlutterAppDelegate
5 | @property (nonatomic, strong) FlutterViewController* controller;
6 | @end
7 |
--------------------------------------------------------------------------------
/ios/Runner/AppDelegate.m:
--------------------------------------------------------------------------------
1 | #import "AppDelegate.h"
2 | #import "GeneratedPluginRegistrant.h"
3 | #import "RsaAndBase64.h"
4 |
5 | @implementation AppDelegate
6 |
7 | - (BOOL)application:(UIApplication *)application
8 | didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
9 | [NSThread sleepForTimeInterval:1];
10 | self.controller = (FlutterViewController*)self.window.rootViewController;
11 | [self configureFlutterEngine];
12 | [GeneratedPluginRegistrant registerWithRegistry:self];
13 | // Override point for customization after application launch.
14 | return [super application:application didFinishLaunchingWithOptions:launchOptions];
15 | }
16 |
17 |
18 | - (void) configureFlutterEngine{
19 | [self registerEncocd];
20 | }
21 |
22 |
23 | //注册加密模块
24 | - (void)registerEncocd{
25 | FlutterMethodChannel* encodeChannel = [FlutterMethodChannel
26 | methodChannelWithName:@"www.guigug.com/rsa_and_base64"
27 | binaryMessenger:self.controller ];
28 |
29 | [encodeChannel setMethodCallHandler:^(FlutterMethodCall* call, FlutterResult result) {
30 | if ([@"encode" isEqualToString:call.method]) {
31 | result([RsaAndBase64 rsaAndBase64Encode:call.arguments[@"plaint"]]);
32 | } else {
33 | result(FlutterMethodNotImplemented);
34 | } }];
35 | }
36 | @end
37 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "size" : "20x20",
5 | "idiom" : "iphone",
6 | "filename" : "icon-20@2x.png",
7 | "scale" : "2x"
8 | },
9 | {
10 | "size" : "20x20",
11 | "idiom" : "iphone",
12 | "filename" : "icon-20@3x.png",
13 | "scale" : "3x"
14 | },
15 | {
16 | "idiom" : "iphone",
17 | "size" : "29x29",
18 | "scale" : "1x"
19 | },
20 | {
21 | "size" : "29x29",
22 | "idiom" : "iphone",
23 | "filename" : "icon-29@2x.png",
24 | "scale" : "2x"
25 | },
26 | {
27 | "size" : "29x29",
28 | "idiom" : "iphone",
29 | "filename" : "icon-29@3x.png",
30 | "scale" : "3x"
31 | },
32 | {
33 | "size" : "40x40",
34 | "idiom" : "iphone",
35 | "filename" : "icon-40@2x.png",
36 | "scale" : "2x"
37 | },
38 | {
39 | "size" : "40x40",
40 | "idiom" : "iphone",
41 | "filename" : "icon-40@3x.png",
42 | "scale" : "3x"
43 | },
44 | {
45 | "size" : "60x60",
46 | "idiom" : "iphone",
47 | "filename" : "icon-60@2x.png",
48 | "scale" : "2x"
49 | },
50 | {
51 | "size" : "60x60",
52 | "idiom" : "iphone",
53 | "filename" : "icon-60@3x.png",
54 | "scale" : "3x"
55 | },
56 | {
57 | "idiom" : "ipad",
58 | "size" : "20x20",
59 | "scale" : "1x"
60 | },
61 | {
62 | "idiom" : "ipad",
63 | "size" : "20x20",
64 | "scale" : "2x"
65 | },
66 | {
67 | "idiom" : "ipad",
68 | "size" : "29x29",
69 | "scale" : "1x"
70 | },
71 | {
72 | "idiom" : "ipad",
73 | "size" : "29x29",
74 | "scale" : "2x"
75 | },
76 | {
77 | "idiom" : "ipad",
78 | "size" : "40x40",
79 | "scale" : "1x"
80 | },
81 | {
82 | "idiom" : "ipad",
83 | "size" : "40x40",
84 | "scale" : "2x"
85 | },
86 | {
87 | "idiom" : "ipad",
88 | "size" : "76x76",
89 | "scale" : "1x"
90 | },
91 | {
92 | "idiom" : "ipad",
93 | "size" : "76x76",
94 | "scale" : "2x"
95 | },
96 | {
97 | "idiom" : "ipad",
98 | "size" : "83.5x83.5",
99 | "scale" : "2x"
100 | },
101 | {
102 | "size" : "1024x1024",
103 | "idiom" : "ios-marketing",
104 | "filename" : "icon-1024.png",
105 | "scale" : "1x"
106 | }
107 | ],
108 | "info" : {
109 | "version" : 1,
110 | "author" : "xcode"
111 | }
112 | }
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-1024.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-60@3x.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" : "splash_logo_one.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "splash_logo_one@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "splash_logo_one@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/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/LaunchImage.imageset/splash_logo_one.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/ios/Runner/Assets.xcassets/LaunchImage.imageset/splash_logo_one.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/splash_logo_one@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/ios/Runner/Assets.xcassets/LaunchImage.imageset/splash_logo_one@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/splash_logo_one@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/ios/Runner/Assets.xcassets/LaunchImage.imageset/splash_logo_one@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/splash_logo.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "splash_logo.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "splash_logo@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "splash_logo@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/splash_logo.imageset/splash_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/ios/Runner/Assets.xcassets/splash_logo.imageset/splash_logo.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/splash_logo.imageset/splash_logo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/ios/Runner/Assets.xcassets/splash_logo.imageset/splash_logo@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/splash_logo.imageset/splash_logo@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bozaigao/fish-redux-demo/da8dd7fa2d9698e47933d73273b9c8f5ea569fc7/ios/Runner/Assets.xcassets/splash_logo.imageset/splash_logo@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios/Runner/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | 医点数据
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | $(FLUTTER_BUILD_NAME)
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | $(FLUTTER_BUILD_NUMBER)
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UISupportedInterfaceOrientations
30 |
31 | UIInterfaceOrientationPortrait
32 | UIInterfaceOrientationLandscapeLeft
33 | UIInterfaceOrientationLandscapeRight
34 |
35 | UISupportedInterfaceOrientations~ipad
36 |
37 | UIInterfaceOrientationPortrait
38 | UIInterfaceOrientationPortraitUpsideDown
39 | UIInterfaceOrientationLandscapeLeft
40 | UIInterfaceOrientationLandscapeRight
41 |
42 | UIViewControllerBasedStatusBarAppearance
43 |
44 | NSAppTransportSecurity
45 |
46 | NSAllowsArbitraryLoads
47 |
48 | NSExceptionDomains
49 |
50 | localhost
51 |
52 | NSExceptionAllowsInsecureHTTPLoads
53 |
54 |
55 |
56 |
57 | io.flutter.embedded_views_preview
58 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/ios/Runner/RsaAndBase64/RSAEncryptor.h:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | @interface RSAEncryptor : NSObject
4 |
5 | /**
6 | * 加密方法
7 | *
8 | * @param str 需要加密的字符串
9 | * @param path '.der'格式的公钥文件路径
10 | */
11 | + (NSString *)encryptString:(NSString *)str publicKeyWithContentsOfFile:(NSString *)path;
12 |
13 | /**
14 | * 解密方法
15 | *
16 | * @param str 需要解密的字符串
17 | * @param path '.p12'格式的私钥文件路径
18 | * @param password 私钥文件密码
19 | */
20 | + (NSString *)decryptString:(NSString *)str privateKeyWithContentsOfFile:(NSString *)path password:(NSString *)password;
21 |
22 | /**
23 | * 加密方法
24 | *
25 | * @param str 需要加密的字符串
26 | * @param pubKey 公钥字符串
27 | */
28 | + (NSString *)encryptString:(NSString *)str publicKey:(NSString *)pubKey;
29 |
30 | /**
31 | * 解密方法
32 | *
33 | * @param str 需要解密的字符串
34 | * @param privKey 私钥字符串
35 | */
36 | + (NSString *)decryptString:(NSString *)str privateKey:(NSString *)privKey;
37 |
38 | @end
39 |
--------------------------------------------------------------------------------
/ios/Runner/RsaAndBase64/RsaAndBase64.h:
--------------------------------------------------------------------------------
1 | //
2 | // RsaAndBase64.h
3 | // Mobispot
4 | //
5 | // Created by bozaigao on 2017/6/21.
6 | // Copyright © 2017年 Facebook. All rights reserved.
7 | //
8 | #import
9 | @interface RsaAndBase64 : NSObject
10 | + (NSString*) rsaAndBase64Encode:(NSString *) plaint;
11 | @end
12 |
--------------------------------------------------------------------------------
/ios/Runner/RsaAndBase64/RsaAndBase64.m:
--------------------------------------------------------------------------------
1 | //
2 | // RsaAndBase64.m
3 | // Mobispot
4 | // RsaAndBase64加密
5 | // Created by bozaigao on 2017/6/21.
6 | // Copyright © 2017年 Facebook. All rights reserved.
7 | #import "RsaAndBase64.h"
8 | #import "RSAEncryptor.h"
9 | //处于业务安全考虑,该公钥已被隐藏
10 | #define public_key @"xxx"
11 | @implementation RsaAndBase64
12 |
13 | /**
14 | *调用原生模块进行rsa加密和base64编码
15 | */
16 | + (NSString*) rsaAndBase64Encode:(NSString *) plaint
17 | {
18 | NSString *encryptStr = [RSAEncryptor encryptString:plaint publicKey:public_key];
19 | NSLog(@"加密后的数据为: %@", encryptStr);
20 | return encryptStr;
21 | }
22 |
23 | /**
24 | *调用原生模块base64解码
25 | */
26 | + (NSString*) decryptByPublicKey:(NSString *) plaint
27 | {
28 | NSData *plaint_data =
29 | [plaint dataUsingEncoding:NSUTF8StringEncoding];
30 | NSData *nsdataDecoded = [plaint_data initWithBase64EncodedData:plaint_data options:0];
31 | NSString *str = [[NSString alloc] initWithData:nsdataDecoded encoding:NSUTF8StringEncoding];
32 | NSLog(@"解密后的数据为: %@", str);
33 | return str;
34 | }
35 | @end
36 |
--------------------------------------------------------------------------------
/ios/Runner/main.m:
--------------------------------------------------------------------------------
1 | #import
2 | #import
3 | #import "AppDelegate.h"
4 |
5 | int main(int argc, char* argv[]) {
6 | @autoreleasepool {
7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/lib/app.dart:
--------------------------------------------------------------------------------
1 | import 'package:fish_redux/fish_redux.dart';
2 | import 'package:fluro/fluro.dart';
3 | import 'package:flutter/material.dart' hide Action;
4 | import 'package:flutter_app/routes/index/page.dart';
5 | import 'package:flutter_app/utils/log_utils.dart';
6 | import 'package:flutter_app/utils/routes/application.dart';
7 | import 'package:flutter_app/utils/routes/routers.dart';
8 | import 'package:oktoast/oktoast.dart';
9 | import 'global_store/state.dart';
10 | import 'global_store/store.dart';
11 |
12 | /// 创建应用的根 Widget
13 | /// 1. 创建一个简单的路由,并注册页面
14 | /// 2. 对所需的页面进行和 AppStore 的连接
15 | /// 3. 对所需的页面进行 AOP 的增强
16 | Widget createApp() {
17 | final router = Router();
18 | Routes.configureRoutes(router);
19 | Application.router = router;
20 | Log.init();
21 |
22 | dynamic indexPage = IndexPage();
23 | indexPage.connectExtraStore(GlobalStore.store,
24 | (Object pagestate, GlobalState appState) {
25 | final GlobalBaseState p = pagestate;
26 | if (p.userInfo != appState.userInfo) {
27 | if (pagestate is Cloneable) {
28 | final Object copy = pagestate.clone();
29 | final GlobalBaseState newState = copy;
30 | newState.userInfo = appState.userInfo;
31 | return newState;
32 | }
33 | }
34 | return pagestate;
35 | });
36 |
37 | return OKToast(
38 | child: MaterialApp(
39 | debugShowCheckedModeBanner: false,
40 | home: indexPage.buildPage(null),
41 | onGenerateRoute: Application.router.generator,
42 | ),
43 | );
44 | }
45 |
--------------------------------------------------------------------------------
/lib/global_store/action.dart:
--------------------------------------------------------------------------------
1 | import 'package:fish_redux/fish_redux.dart';
2 | import 'package:flutter_app/models/user_info_entity.dart';
3 |
4 | enum GlobalAction { updateUserInfo }
5 |
6 | class GlobalActionCreator {
7 | static Action updateUserInfo(UserInfoEntity userInfo) {
8 | return Action(GlobalAction.updateUserInfo, payload: userInfo);
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/lib/global_store/reducer.dart:
--------------------------------------------------------------------------------
1 | import 'package:fish_redux/fish_redux.dart';
2 | import 'action.dart';
3 | import 'state.dart';
4 |
5 | Reducer buildReducer() {
6 | return asReducer(
7 |