Flutter 基础知识和常见问题记录

基础知识

总有一些知识,你看着吧,简单!用着的时候吧,忘了,那就把这些又爱又气的家伙记录在这里吧 !!!

新的改变

Alt

容易碰到的报错

Running Gradle task ‘assembleDebug’…

这个问题遇到概率贼高,至少我是这个样子的,看似简单,却经常忘记。

原因 是因为Gradle的Maven仓库在国外, 因此需要使用阿里云的镜像地址。

maven { url ‘https://maven.aliyun.com/repository/google’ }
maven { url ‘https://maven.aliyun.com/repository/jcenter’ }
maven { url ‘http://maven.aliyun.com/nexus/content/groups/public}

在哪里修改应该知道的吧!还是提一下,android/build.gradle 文件

如上述还是没有解决你的问题,升级gradle版本或可一试,别人说的,没有验证哦。

Error when reading ‘lib/main.dart’: 系统找不到指定的路径

解决方案:

这个错误分为两种情况,具体的解决方案看你的项目是以什么环境在运行:

  • 项目运行在Flutter环境

    • 查看lib目录下是否有 main.dart 文件
    • 打开运行按钮左边的main.dart选项,选择Edit Configurations… 修改Dart entrypoint,改成你项目中main.dart 实际存放位置
  • 项目运行在Android环境

    • 在 FlutterSDK目录路径/packages/flutter_tools/gradle/flutter.gradle 文件中找到如下位置修改入口文件target的路径值:
    String target = project.flutter.target
     if (target == null) {
         target = 'lib/main.dart'
     }

项目无法运行解决方案

你或许会因为下面原由而项目无法运行:

  1. 项目因删除某些文件(如:android文件夹、ios文件夹等)导致项目无法运行;
  2. 拉取git库项目出现莫名奇妙的原因无法运行;
  3. 直接拷贝别的电脑上可运行的项目,但是在自己电脑上无法运行;

解决方案:

注意:以下操作会删除Android 和 iOS 中的一些配置和初始化设置

  1. 需要删除自动生成的文件重新生成

  2. 只保留 :

    1 assets -->资源文件,或者自定义的资源文件 .
    2 lib --> Flutter代码模块
    3 pubspec.yaml --> Flutter 配置文件
    4 .gitignore 文件

  3. 运行重新生成命令:

    flutter create .

  4. 若运行完重新生成文件后测试test文件夹内文件报错可直接删除。

  5. 更加详细参考文档: 链接地址

Flutter百度地图缩放控件(加减号)隐藏

比例尺在官方提供Flutter文档中有隐藏方法,但是缩放控件官网暂时没有提供隐藏方法,我百思不得其解 - 历经种种 - 终得解决 - 特此记录 - 以帮助如我一般的斗士。
我的思路:

  • 首页肯定是百度,但能找到的都是Android中隐藏缩放的方案,这便是唯一的线索
  • 然后我看是尝试在Flutter获取地图对象,但只能得到 BMFMapController
  • 后来我有将项目运行在Android环境上,发现了地图对象,但是没有触发源
  • 最后我在寻找Flutter和Android原生的交互过程中,在Gitee上发现了大佬的解决方案

大佬的方案:

在设置自定义风格接口中 隐藏了logo标志、指南针和放大缩小按钮

首先,百度地图插件 Android 项目 CustomMapHandler.class

private void setCustomMapStyleEnable(MethodCall call, MethodChannel.Result result) {
            .....
            .....
            mRealMapView.showZoomControls(false);
            mMapView.getBaiduMap().getUiSettings().setCompassEnabled(false);
            View child=mRealMapView.getChildAt(1);
            if(child!=null &&( child instanceof ImageView || child instanceof ZoomControls)){
                child.setVisibility(View.INVISIBLE);
            }
            .....
            .....
}

然后只需在Flutter中,合适的实际调用

myMapController?.setCustomMapStyleEnable(true);
  • 注意: 这可能不是最科学的方案,但却是一个可行的方案

百度地图定位:第一次定位成功之后 再次定位一直返回:505 错误

报错信息如下:

I/flutter ( 7891): { callbackTime: 2020-12-15 15:53:08, errorCode: 505, 
                     errorInfo: NetWork location failed because baidu location service check the key is unlegal, 
                     please check the key in AndroidManifest.xml !}

造成的原因主要有两个:

  1. 本项目使用的包名和百度地图里申请时使用的包名不一致。
  2. 本项目使用的秘钥和百度地图里申请时使用的秘钥参数值不同。

此处主要记录一下问题2的解决。

解决方案:

  1. 获取当前应用的秘钥信息进行验证。
  2. 应用启动时,在logcat中会有鉴权错误信息可以帮到你。
    =============================================
     ----------------- 鉴权错误信息 ------------
     sha1;package:50:5E:B1:CA:52:5C:C5:15:6C:CF:65:A4:B6:5A:37:29:62:09:62:B3;com.example.test
     key:kDekSA3sVGT7kEQkfRjAqamBoNMI4dUa
     errorcode: 230 uid: -1 appid -1 msg: APP Mcode码校验失败
     请仔细核查 SHA1、package与key申请信息是否对应,key是否删除,平台是否匹配
     errorcode为230时,请参考论坛链接:
     http://bbs.lbsyun.baidu.com/forum.php?mod=viewthread&tid=106461
     =============================================
    
  3. 再查看当前应用app/build.gradle中是否进行了秘钥加密,如果没有则当前应用使用的是本电脑自动生成的初始秘钥,修改成为本应用专属的秘钥即可。

获取申请百度地图key所需的SHA1值:

  • 获取debug的SHA1值(电脑自动生成的值)

    • 打开cmd,输入:

      cd .android
      keytool -list -v -keystore debug.keystore

    • 输入秘钥库口令,默认的就是:andorid ;回车既可以看到SHA1的值了;

  • 获取release的SHA1的值(这个是重点)

    • 打开cmd,输入:

      cd .android
      keytool -list -v -keystore 你自己的打包用到的keystore的路径

    • 输入秘钥库口令。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值