flutter经验总结,稍候会整理进简历
1:使用flutter_screenutil做跨平台适配时,ios页面个别细节需要微调整
2: 再IOS平台上底部弹窗需要使用SafeArea包裹,避免出现弹窗底部按钮和导航栏遮挡
3:优先考虑使用update['id']这种方式局部刷新页面
4:主题的更换,使用一个类来实现,主要涉及颜色、图片等资源,避免到处传参
5:发挥flutter跨平台的最大特性,个别特殊功能使用PlatformView或者Channel和原生交互实现
6:
flutter异常捕获(最终还是通过原生上报)
1:原生接入友盟统计 2:在flutter和原生进行channle交互配置 3:在flutter中通过FlutterError.onError,提供⼀个⾃定义的错误处理回调 4:最终还是通过原生上报
MobclickAgent.reportError
//全局异常的捕捉
class AppCatchError {
run(Widget app) {
///Flutter 框架异常
FlutterError.onError = (FlutterErrorDetails details) async {
///线上环境
if (BaseUrl.DEBUG == false) {
Zone.current.handleUncaughtError(details.exception, details.stack!);
} else {
//开发期间 print
FlutterError.dumpErrorToConsole(details);
}
};
runZonedGuarded(() {
//受保护的代码块
runApp(app);
}, (error, stack) => catchError(error, stack));
}
///对搜集的 异常进行处理 上报等等
catchError(Object error, StackTrace stack) {
// print("AppCatchError>>>>>>>>>>: $kReleaseMode"); //是否是 Release版本
// print('AppCatchError message:$error,stack$stack');
if (BaseUrl.DEBUG == true) {
// if (kDebugMode) {
// ignore: avoid_print
print(
'\n\n\n\n❌❌❌❌❌❌❌❌❌❌全局异常捕获❌❌❌❌❌❌\n
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)