
正文
flutter2,Flutter20 web 微信小程序
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
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完整参考
相关问答
Q1: Flutter.2.Flutter与OC的双向调用
mrliuys.flutter.io/channel 这个是自由定义,且是全局唯一的,
当flutter需要用到的时候执行 invokeMethod ,
invokeMethod 带两个参数.
Q2: Flutter初步探索(二)使用Tabs
在Material的设计准则里面,tabs是一个常用的模块。Flutter里面包含了 material library 创建tab布局的简便方法
为了使tab起作用,我们需要保持选中的tab和相关内容同步。这就是 TabController 的职责。
我们可以手动创建 TabController ,也可以使用 DefaultTabController 小部件。使用 DefaultTabController 是最简单的选项,因为它将为我们创建一个 TabController ,并使它可用于所有子类Widget。
现在我们已经有个一个 TabController ,我们可以 TabBar Widget去使用创建我们的tab。在这个示例中,我们将会在一个 AppBar 下.创建一个包含3个 Tab Widgets 的 TabBar 。
默认情况下, TabBar 在Widget树中查找最近的 DefaultTabController 。如果是手动创建的 TabController ,则需要将其传递到“TabBar”。
既然我们有了选项卡,那么我们就需要在选择选项卡时显示相关的内容。因此,我们将使用 TabBarView Widget.
备注: 顺序很重要,必须与 TabBar 中的选项卡的顺序相对应!
1. Flutter初步探索(二)使用Tabs
1. Working with Tabs
Q3: Flutter-02编译器选择
1.打开 VS Code。
2.打开 查看 命令面板…。
3.输入 “install”,然后选择 扩展: 安装扩展(就是点击选择第一行内容)。
4.在扩展搜索输入框中输入 “flutter”,然后在列表中选择 Flutter 并单击 安装。此过程中会自动安装必需的 Dart 插件。(选择第一行并安装)
5.退出然后重新启动 VS Code。
1.打开 查看 命令面板…。
2.输入 “doctor”,选择 Flutter: Run Flutter Doctor。
3.打开 输出 (OUTPUT) 面板查看是否有错误,确保在不同的输出选项 (Output Options) 的下拉列表中选择了 Flutter。
我们在上篇文章已经用命令行创建了一个 my_app 的flutter项目了,这里我们就可以使用 vscode 打开看看了
创建新项目 ,则是在命令面板输 flutter , 选择 Flutter: New Application Project
运行项目 ,找到 VS Code 的状态栏(窗口底部蓝色的条)
1.打开 Android Studio。
2.打开插件设置(在 v3.6.3.0 以上的系统打开 Configure Plugins)。
这里需要先改一下网络请求的设置
3.然后搜索Flutter 插件,选择并点击 安装。
4.当弹出安装 Dart 插件提示时,点击 Yes。
5.退出重新启动编译器,然后在编译器主页面就可以看到多了了 create new flutter project 可供选择,代表flutter插件安装成功,我们试着点击来创建一个新项目。







