# Flutter

# 准备工作

# 推荐框架

# 几种状态管理框架对比
状态管理框架 Pub like star 状态更新 共享状态 颗粒度 说明
setState - - Yes No - 适用于较小规模 widget 的暂时性状态的基础管理方法
StreamController - - Yes No 变量 基于流/观察者模式的基础管理方法
RxDart 712 2600 Yes No 变量 基于流/观察者模式的框架
MobX 224 1700 Yes No 变量 基于观察及响应的状态管理常用库
GetX 1723 1300 Yes Yes 变量 轻量级响应式状态管理解决方案
provider 2488 3000 Yes Yes 官方推荐的状态共享框架
flutter_bloc 1236 5700 Yes Yes 基于流/观察者模式的框架
flutter_redux 164 1300 Yes Yes 前端开发者较为熟悉的状态容器实现。
fish-Redux 34 6800 Yes Yes 基于Redux状态管理的组合式 Flutter 应用框架

# Flutter 打包

# Flutter 打包 apk

指令:flutter build apk 会包含以下三组平台(x86_64 、arm64-v8a 、armeabi-v7a

正确的做法是:针对平台打包,国内的更多的是arm平台

/// 系统系统拆分不同的abi 
flutter build apk --target-platform android-arm,android-arm64,android-x64 --split-per-abi
flutter build apk --release  --target-platform android-arm

生成aar包,同理

flutter build aar --release  --target-platform android-arm

# Flutter 打包 ipa

flutter build ios --release

# 交付成果

屏显 (opens new window)

  • 已上线应用商店

  • 技术方案:Flutter + Provider;

天联共创 (opens new window)

  • 仿造原生天联共创v0.2.0版本内容,进行技术验证;
  • 技术方案:Flutter + Fish Redux;

小牛制造 (opens new window)

# 注意事项

# 一、pubspec.yaml 问题

在window环境中;如果 主工程 远程依赖私有git中的项目 nim_ui_kit ,项目 nim_ui_kit又远程依赖私有git中的项目 amap_base;会导致window环境下的AndroidStudio编译错误,会提示pubspec.yaml 中的某行中存在格式错误的异常报错bug;

# 主工程 依赖 nim_ui_kit网易云信
nim_ui_kit:
  git:
    url: http://218.106.157.184:3001/flutter/nim_ui_kit
# nim_ui_kit网易云信 依赖 amap_base地图库 
amap_base:
  git:
    url: http://218.106.157.184:3001/flutter/amap_base
# 二、flutter build apk 找不到libflutter.so的问题

flutter 在android打包时,使用 flutter build apk 打出来的包安装后,打开APP会报上述错误

目前的解决方案是先使用 flutter run apk --release 进行打包

# 三、flutter 使用Dio网络库时,要进行抓包代理,加上以下代码
_dio = Dio(options);
    // 抓包代理
 (_dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate = (client) {
  // config the http client
  client.findProxy = (uri) {a
    //proxy all request to localhost:8888
    return "PROXY 192.168.100.33:8888";
  };
  // you can also create a new HttpClient to dio return new HttpClient();
  client.badCertificateCallback = (X509Certificate cert, String host, int port)=>true;
};
# 四、flutter版本控制注意:

如:extended_image: ^0.2.2,

  • 使用命令 flutter upgrade 会升级到最新版本(0.2.9);

  • 如果不需要升级版本,请固定版本 extended_image: 0.2.2(^符号是关键)

# 五、flutter构建 IOS 时,产生编译的包错误

1、报错Could not find an option named "track-widget-creation时,在Xcode上进行生产archive之前先在终端运行以下命令行:$flutter build ios --release (当前项目运行 sh buildIOS)。

2、其它编译报错,或编译后的包打黑黑屏等;可以先执行 $flutter clean,在编译。

最后更新时间: 11/24/2021, 1:59:05 AM