一.flutter packages pub run build_runner build 生成.g文件失败
解决办法: flutter packages pub run build_runner build --delete-conflicting-outputs
二.TabView重绘问题
1.被重绘的tab页要 混入AutomaticKeepAliveClientMixin
class ListFrgtPageState extends State<ListFrgtPage> with AutomaticKeepAliveClientMixin {
2.实现wantKeepAlive方法 ,返回值改成true
bool get wantKeepAlive => true;
3.build中加入 super.build(context);
@override Widget build(BuildContext context) { super.build(context); // TODO: implement build
三,[ERROR:flutter/shell/gpu/gpu_surface_gl.cc(39)] Failed to setup Skia Gr context.
第一种解决办法
进项目根目录,用命令方式运行: flutter run --enable-software-rendering
第二种解决办法:
Android Studio配置:选择run/configurations 菜单
配置如下图:
四 在initState中不能调用Diaolog(如:网络请求显示加载框)
五 默认创建的Flutter项目编译为kotlin
解决办法:创建flutter项目命令:
flutter 创建Andorid版本命令语句:flutter create -i objc -a java new_app(项目名)
flutter 创建kotlin版本命令语句:flutter create -i objc -a kotlin new_app(项目名)
直接在目标文件夹下执行即可!
借鉴地址:flutter 创建项目命令,Andorid版本和Kotlin版本_秦小伟的博客-CSDN博客
六,项目迁移时(win到mac)
Warning! This package referenced a Flutter repository via the .packages file that is no longer available. The repository from which the 'flutter' tool is currently executing will be used instead.
running Flutter tool: /Users/jianpei/Desktop/flutterSdk/flutter
previous reference : /D:/FlutterSDK/flutter
This can happen if you deleted or moved your copy of the Flutter repository, or if it was on a volume that is no longer mounted or has been mounted at a different location. Please check your system path to verify that you are running the expected version (run 'flutter --version' to see which flutter is on your path).
只是修改了dart和flutter路径配置还不可以,
还需要根据错误信息替换.packages中的路径
七:mac flutter环境配置
使用mac命令行工具
1.使用命令open ~/.zshrc 打开zshrc文件
2.如果不存在则使用vim ~/.zshrc 命令创建
3.输入以下内容(镜像,flutterSDK路径)
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
export PATH="FlutterSDK路径/flutter/bin:$PATH"
4.使用 :wq 回车保存(注:如果出现E45: 'readonly' option is set (add ! to override)
,可使用 :wq! 回车强制保存)
注:如果执行flutter doctor 提示“-bash: flutter: command not found”表示环境没有成功,可以创建和打开bash_profile文件再执行第三步即可。
八:执行flutter doctor --android-licenses
提示:Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
主要因为SDK Tools中的Android SDK Command-line Tools没有安装
九.BottomNavigationBar的backgroundColor设置失效问题:
大概意思就是设置backgroundColor需要type设置为shifting.
注意:如果item数量超过3个的话type默认设置为fixed
具体原因:可以看到只有类型为shiftingshi时才会使用backgroundColor否则使用默认
webview_flutter 问题整理
1.问题发现:webview中内嵌公众号页面发现视频无法播放,浏览器打开可以正常播放。
经过排查是http和https混用问题。
解决方案:打开flutter android程序,找到webview_flutter并打开FlutterWebView类,在构造方法中加入:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//5.0以上强制启用https和http混用模式 webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); }
2.webview中调用支付宝和微信支付:
navigationDelegate: (request) {
LogUtil.d('===================request:${request.url}');
if (Platform.isAndroid) {
if (request.url.startsWith("https://wx.tenpay.com")) {
_webViewController?.loadUrl(request.url,
headers: {"Referer": '微信绑定的域名'});
return NavigationDecision.prevent;
}
if (request.url.startsWith("weixin://wap/pay")) {
launch(request.url);
return NavigationDecision.prevent;
}
if (request.url.startsWith("alipays") ||
request.url.startsWith("alipay://")) {
launch(request.url);
return NavigationDecision.prevent;
}
} else if (Platform.isIOS) {
if (request.url.startsWith("weixin://wap/pay") ||
request.url.startsWith("alipays") ||
request.url.startsWith("alipay://")) {
launch(request.url);
}
}
return NavigationDecision.navigate;
},
参考地址:Flutter中使用webview_flutter遇到的https和http混用问题(Android)_Mr_Tony的专栏-CSDN博客
自定义camera Android7.1以上拍照报错:CameraException(cameraAccess, CAMERA_ERROR (3):
解决方案:打开flutter android程序,找到camera并打开Camera类,在
takePictureAfterPrecapture方法中加入:
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.N) { captureSession.stopRepeating(); captureSession.abortCaptures(); }
fultter null_safety打包运行问题:
运行可以执行命令:flutter run --no-sound-null-safety
或者直接配置
Android打包可以执行命令:flutter build apk --no-sound-null-safety
ios打包可以执行命令:flutter build ios --no-sound-null-safety