Flutter 踩坑合集亲测有效

couldn’t find “libflutter.so”

flutter run 的时候有问题,build 就可以打进去
//这样就可以了 
flutter run  --target-platform android-arm

flutter Could not find an option named “target-platform”.

如果没有这个可能flutter sdk把她remove 了 这个之前遇到过,解决方式是我把fluttetr sdk 分支 切到 stable(稳定版) 那个时候这个这个分支上还有

flutter 打包把assets 目录下文件清空bug
打开你flutter sdk 目录 flutter_tool/gradle/flutter 400 左右

   Task packageAssets = project.tasks.findByPath(":flutter:package${variant.name.capitalize()}Assets")
            Task cleanPackageAssets = project.tasks.findByPath(":flutter:cleanPackage${variant.name.capitalize()}Assets")
            Task copyFlutterAssetsTask = project.tasks.create(name: "copyFlutterAssets${variant.name.capitalize()}", type: Copy) {
                dependsOn flutterTask
                if (packageAssets && cleanPackageAssets) {
                  
                    dependsOn packageAssets
                    dependsOn cleanPackageAssets
                    into packageAssets.outputDir
                } else {
                    dependsOn variant.mergeAssets
                    //把这里注释掉
                    // dependsOn "clean${variant.mergeAssets.name.capitalize()}"
                    into variant.mergeAssets.outputDir
                }
                with flutterTask.assets
            }

android dialog 返回键回去的问题

一般 loading 进度框 用dialog的方式,但是返回是通过Navigator.of(context).pop(); 取消
流程发起网络(showDialog)->返回键(pop 一次)->网络成功(pop 回调一次) 就会pop 两次
解决方式 是 showDialog 里面 widget WillPopScope 这个不对返回键操作就好了
import 'package:flutter/material.dart';

// ignore: must_be_immutable
class LoadingDialog extends Dialog {
  LoadingDialog({Key key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return new Material(
        //创建透明层
        type: MaterialType.transparency, //透明类型
        child: new WillPopScope(
          onWillPop: () async {
            return Future.value(false);
          },
          child: new Center(
            //保证控件居中效果
            child: new SizedBox(
              width: 120.0,
              height: 120.0,
              child: new Container(
                decoration: ShapeDecoration(
                  shape: RoundedRectangleBorder(
                    borderRadius: BorderRadius.all(
                      Radius.circular(8.0),
                    ),
                  ),
                ),
                child: new Column(
                  mainAxisAlignment: MainAxisAlignment.center,
                  crossAxisAlignment: CrossAxisAlignment.center,
                  children: <Widget>[
                    new CircularProgressIndicator(
                      backgroundColor: Color.fromRGBO(0, 0, 0, 0),
                      valueColor: AlwaysStoppedAnimation(Colors.white),
                    ),
                  ],
                ),
              ),
            ),
          ),
        ));
  }
}

Must be compiled first into .flat file.

gradle.properties
android.enableAapt2=false

Flutter 黑屏

    @Override
    public FlutterView createFlutterView(Context context) {
        WindowManager.LayoutParams matchParent = new WindowManager.LayoutParams(-1, -1);
        FlutterNativeView nativeView = this.createFlutterNativeView();
        final FlutterView flutterView = new FlutterView(FlutterActivity.this, (AttributeSet) null, nativeView);
        flutterView.setLayoutParams(matchParent);
        final FrameLayout frameLayout = new FrameLayout(this);
        frameLayout.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT));
        this.setContentView(frameLayout);
        frameLayout.addView(flutterView);
        frameLayout.setVisibility(View.INVISIBLE);
        flutterView.addFirstFrameListener(new FlutterView.FirstFrameListener() {
            @Override
            public void onFirstFrame() {
                frameLayout.setVisibility(View.VISIBLE);

            }
        });
        return flutterView;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值