Flutter问题记录(持续更新)

文章目录

一、 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()

三、 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注意⚠️:打包或真机运行时需要去掉,否则会报错。
在这里插入图片描述

四、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的区别是点击事件是否可以向下传递,注释翻译:半透明目标既可以在其范围内接受事件,也可以允许视觉上位于其后方的目标接收事件。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Flutter 是一个流行的跨平台移动应用程序开发框架,可用于 iOS 和 Android 平台。要实现后台持续定位,你可以使用 Flutter 的 geolocator 插件。 首先,你需要在 pubspec.yaml 文件中添加 geolocator 依赖项。 ```yaml dependencies: geolocator: ^5.3.2+2 ``` 然后,在你的代码中导入 geolocator 库,创建一个 Geolocator 实例并启动位置流。 ```dart import 'package:geolocator/geolocator.dart'; // 创建一个 Geolocator 实例 final Geolocator geolocator = Geolocator()..forceAndroidLocationManager; // 启动位置流,要求持续定位 StreamSubscription<Position> positionStream = geolocator.getPositionStream( desiredAccuracy: LocationAccuracy.high, distanceFilter: 10, // 10米以上的移动才会触发位置更新 ).listen((Position position) { // 处理位置变化 }, onError: (error) { // 处理错误 }); ``` 在应用程序处于后台运行时,你需要在 AndroidManifest.xml 文件中添加一些配置,以确保应用程序可以继续接收位置更新。在 \<application> 标记内部添加以下代码: ```xml <service android:name="com.lyokone.location.LocationService" /> <receiver android:name="com.lyokone.location.LocationBroadcastReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.QUICKBOOT_POWERON" /> </intent-filter> </receiver> ``` 最后,在你的代码中添加以下代码,以确保应用程序在终止时停止位置流。 ```dart // 停止位置流 positionStream.cancel(); ``` 希望这可以帮助你实现后台持续定位。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

倾云鹤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值