Flutter问题记录2 (持续更新) (apple m1 arm64插件报错)

4 篇文章 0 订阅

一、 Error installing libwebp

在这里插入图片描述

1. 问题原因

无法正常连接libwebp库

2. 解决方案

a. 终端输入pod repo查看cocoapods在本机的地址

在这里插入图片描述

b. 进入该文件地址/Speces/1/9/2/libwebp
c. 进入具体的报错版本
例如我这里的1.2.0,则修改里面的json文件,将Source改为https://github.com/webmproject/libwebp.git

d. 执行pod install


二、 SingleChildScrollView嵌套ListView等可滑动组件时产生滑动冲突


1. 两个可滑动组件产生滑动冲突
2. 解决方案
禁用内部可滑动组件,保留外部可滑动组件。修改ListView的physics属性为physics: new NeverScrollableScrollPhysics()

三、arm64 体系,真机没问题

 ld: in /Users/max/Documents/GitHub/music_grading_app/ios/Pods/WechatOpenSDK_Fuck/OpenSDK1.9.2/libWeChatSDK.a(WechatAuthSDK.o), building for iOS Simulator, but linking in object file built for iOS, file ‘/Users/max/Documents/GitHub/music_grading_app/ios/Pods/WechatOpenSDK_Fuck/OpenSDK1.9.2/libWeChatSDK.a’ for architecture arm64

1. xcode12弃用了arm64,但是有些第三方还在使用
2. 解决方案
(1) 使用真机
(2)排除arm64体系
修改如下:在Excluded Architectures内添加arm64。

注意⚠️:打包或真机运行时需要去掉,否则会报错。

方法二:解决了

gem install --user-install ffi -- --enable-libffi-alloc
之后,pod install再次运行或任何您尝试执行的操作,但不要使用arch -x86_64.
 
它对我来说没有问题,这样我也可以避免采用英特尔仿真(Rosetta 2)的方式。
 
我在 ffi github 项目上提交的问题中找到了这个解决方案。
ruby - Error installing a pod - Bus Error at 0x00000001045b8000 - Stack Overflow

四、Execution failed for task ‘:app:compileFlutterBuildDebug’.

更新flutter版本

五、Execution failed for task ‘:app:compileDebugKotlin’.

1. 问题原因
kotlin版本不对应或不是最新版本。

2. 解决方案
(1) Android Studio—Preferences—Languages & Frameworks—Kotlin—更新到最新版
(2) 记住上一步的版本号,去android/build.gradle内修改buildscript

buildscript {
    ext.kotlin_version = '1.4.32' /// 此处修改成上一步的版本号
    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:4.1.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

六、 GetX: BottomSheet跳转到同一页面时首次可以,第二次点击无效
1. 问题原因
因为使用GetX框架,在BottomSheet上使用Get.to方法跳转页面时,会默认为同一页面,默认会阻止多次此种操作。

2. 解决方案
只需在将preventDuplicates设置为false即可
 

Get.to(()=>Page(), preventDuplicates: false);

七、 安卓模式下fluwx,调起微信支付失败

 在这里插入图片描述

1. 问题原因

debug模式下使用的签名是默认的,未在微信后台配置。改成和release相同的即可

2. 解决方案

只需在将android/app/build.gradle内修改如下

signingConfigs {
        release {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile file(keystoreProperties['storeFile'])
            storePassword keystoreProperties['storePassword']
        }
        /// 添加以下部分即可
        debug {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile file(keystoreProperties['storeFile'])
            storePassword keystoreProperties['storePassword']
        }
    }

八、Execution failed for task ‘:wakelock:compileDebugKotlin’.
执行flutter clean后操作

九、存储到本地的文件(图片、视频等文件),调用时找不到
1. IOS端
例如存储时地址为/var/mobile/Containers/Data/Application/加密乱码/Documents/camera/videos/REC_9D448AD8-D726-4F9A-AF7C-E672043B88DC.mp4

但是直接调用这个地址会报错,因为文中 **加密乱码**会随机变换,所以要path_provider重新调用项目地址进行拼接。

2. Android端
暂时无这种问题。

十、循环Map时,map.values.map和map.values.forEach的区别
1. Map.values.map
具有惰性,只有它本身被迭代时,才会应用

转换后的元素不会缓存

2. Map.values.forEach
类似于for循环
十一、Container未设置color时,添加GestureDetector时无响应
1. 给Contianer添加color
2. GestureDetector修改behavior属性
deferToChild: 只有当前容器中的child被点击时才会响应点击事件**(默认)**。
opaque:点击整个区域都会响应点击事件,但是点击事件不可穿透向下传递,注释翻译:阻止视觉上位于其后方的目标接收事件。
translucent:同样是点击整个区域都会响应点击事件,和opaque的区别是点击事件是否可以向下传递,注释翻译:半透明目标既可以在其范围内接受事件,也可以允许视觉上位于其后方的目标接收事件。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值