升级flutter,升级鸿蒙后利弊
Flutter升级之后项目不能运行
flutter运行之后报了这个错,不能够运行。
创新互联建站是一家集网站建设,靖西企业网站建设,靖西品牌网站建设,网站定制,靖西网站建设报价,网络营销,网络优化,靖西网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
在结果上面会提示appt2等错误,其实错误的原因是Androidx支持有问题。
官方解决办法: (合理打开)
app/build.gradle 下面
在gradle.properties下添加:
重新清理运行,ok。
Flutter 项目升级报错处理
1、flutter Warning: Podfile is out of date
Warning: Podfile is out of date This can cause a mismatched version of Flutter to be embedded in your app, which may result in App Store submission rejection or crashes. If you have local Podfile edits you would like to keep, see for instructions. To regenerate the Podfile, run: rm iOS/Podfile
2、Automatically assigning platform iOS with version 8.0 on target Runner 或者Automatically assigning platform iOS with version 12.0 on target Runner because no platform was specified. Please specify a platform for this target in your Podfile
解决:只要修改ios目录下podfile 第二行 去掉#号
原因是:没有指定iOS版本。
3、 'AMapFoundation' uses the unencrypted 'http' protocol to transfer the Pod. Please be sure you're in a safe network with only trusted hosts. Otherwise, please reach out to the library author to notify them of this security issue.
类似的问题
解决方法:
登录 寻找相关最新版本更新一下。
4、[!] An error occurred while processing the post-install hook of the Podfile.
undefined method `each_child' for #Dir:0x00007f8415636e38
Did you mean? each_slice
解决办法:升级ruby
Flutter 升级空安全攻略
1、升级依赖的插件版本pubspec.yaml(包括example),pub get 解决依赖冲突
2、pubspec.yaml所在路径下执行 dart pub upgrade --null-safety 检查是否所在flutter工程依赖库是否都升级到了空安全版本
example示例需要进入example路径下检查
1、List默认构造方法删除,改用[];
main.dart文件main方法第一行增加CustomFlutterBinding();
2、flutter clean,删除所有 pubspec.lock文件 ,pub get
3、FutureOr报错引入头文件、import 'dart:async';
4、属性用优先用late 或者 ?声明,在确定不为空情况才用!
flutter 升级3.0.4
Android V1 升级 V2
(1)旧版方法
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
(2)新方法:
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
解决Flutter升级后,flutter run 卡在gradle build running的问题
brew 安装方式
通过gradle -v查看版本
在项目中的android/gradle/wrapper/gradle-wrapper.properties修改:
在andriod/build.gradle中找到buildscript并更新为新一点;
(在Andriod Studio 中会有提示适合的版本)
在android/build.gradle中添加阿里云的镜像地址:
如果有用到其他的源请自行添加;
附上查询阿里云源的镜像地址
在android/app/build.gradle中修改compileSdkVersion:
(flutter run 后如果不适合会提示)
升级Flutter后, 最好(能不动就不动) 把需要的pub全部升级到最新
方法是去 找到对应包的最新版本
然后更新:flutter pub get
tips:非必要真别升级,切记!切记!
如有用烦请看官点个赞
如有疑问可留言,会尽快的回复您
flutter项目升级2.0过程填坑记录
在此之前先推荐看大佬的: 填坑指导
iOS需要注意:
1、flutter2.0要求cocoapods 升级到1.9.0
详情看这篇博客
2、原来flutter项目中的podfile文件是旧版本的ccocoapods了,删除podfile和对应的.lock,然后flutter项目重新运行使用它自动生成的podfile文件
3、安装CocoaPods
卸载cocoapods:sudo gem uninstall cocoapods
查看cocoapods版本:pod --version
指定版本安装:
sudo gem install -n /usr/local/bin cocoapods -v 1.9.3(新MacOS系统升级)
不指定版本安装
sudo gem install -n /usr/local/bin cocoapods
说明 :老项目sdk1.17.0===升级到2.0.1,当前所有操作基于win平台
到此为止环境已经准备妥当,正式进入项目修改。
所有的插件都要适配到空安全,插件是否支持均会有对应说明Null safety,适配过程不确定版本的话,可以使用dio: any,适配完事后再在pubspec.lock文件中查看具体的版本修改过来,实在有部分插件没有支持的,参考下面
部分插件在适配空安全的版本放弃维护了,得自行更新或寻找替代,如: flutter_swiper 变为 flutter_swiper_null_safety ,插件更新后要注意项目中的用法是否需要更新
2.1.1: 以前采用的是 provide 插件共享全局数据,现在变化为 provider ,用法改变, 点击参考 ,以防文章丢失,我重复一遍:
比如:
2.1.2: dio版本升级到4.0.0最新版后,部分用法改变
2.2.1
2.2.2
解决方案:
2.2.3
解决方案:
2.2.4
解决方案:
2.2.5
解决方案:
2.2.6
解决方案:
2.2.7
解决方案:
2.2.8
解决方案: child 换为sliver
2.2.8.1
解决方案: 项目目录下: android--app-build.gradle --minSdkVersion改为:18 或者19
2.2.8.2
解决方案: 在pubspec.yarm管理里面添加:publish_to
2.2.8.3
解决方案: video_player升级后字段发生了变化,initialized字段更换为:isInitialized(_controller.value.isInitialized)
2.2.8.4
解决方案:
2.2.8.5
解决方案:
2.2.8.6
解决方案: 方案一:删除ios目录下的Podfile.lock 文件然后重新运行 pod install命令
方案二:删除ios目录下的Podfile.lock与Podfile文件 重新运行flutter run或flutter build ios
方案三:删除ios目录,重新运行 flutter create . 命令,注意有"."这个符号不要忘记
2.2.8.7
这个报错一般对应的就是下面的报错,注意看后面的报错信息,看是哪个插件报错。
解决方案: 把Podfile的版本注释打开,改为platform :ios, '9.0' 或者是更高的版本
全局替换
1.将new List() 替换为[];
2.TextField的inputFormatters:[WhitelistingTextInputFormatter.digitsOnly] 替换为[FilteringTextInputFormatter.digitsOnly]
3.TextField的inputFormatters:[WhitelistingTextInputFormatter(RegExp("[a-z|A-Z|0-9]"))]替换为FilteringTextInputFormatter.allow(RegExp("[a-z|A-Z|0-9]"))
4.Stack组件中overflow: Overflow.visible改为 clipBehavior: Clip.none;overflow: Overflow.clip改为clipBehavior:Clip.hardEdge
5.ListWheelScrollView组件中clipToSize = false改为clipBehavior: Clip.none,clipToSize = true改为 Clip.hardEdge
6.TextField中maxLengthEnforced: true改为maxLengthEnforcement:MaxLengthEnforcement.enforced
7.FlatButton、RaisedButton、OutlineButton的变化: 官方参考
颜色的属性发生了变化,由原来的Color 变为了MaterialStatePropertyColor, 这是未了解决不同状态(pressed、hovered、focused、disabled)下按钮颜色的变化
例如
8.出现如下警告
9.showSnackBar报错误
解决方案: Scaffold换为ScaffoldMessenger
10.textSelectionColor弃用
解决方案:
11.charts_flutter升级后属性报错
解决方案:
12.flutter 真机调试无法访问网络,dio报错
解决方案:
android:
ios:
问题12完整参考
分享标题:升级flutter,升级鸿蒙后利弊
文章URL:http://ybzwz.com/article/dsgihsc.html