flutter 遇到的问题整理

一.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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值