Flutter使用问题整理

前言

写这篇文章是为了记录平时在使用flutter时遇到的问题,及解决方案,方便再次遇到时能够快速解决。

问题及解决

问题1

真机运行项目,在构建时提示

Running Gradle task 'assembleDebug'...                             41.8s
[!] App requires Multidex supportMultidex support is required for your android app to build since the number of methods has exceeded 64k. You may pass the --no-multidex flagto skip Flutter's multidex support to use a manual solution.

解决方案:
参考:https://docs.flutter.dev/deployment/android#enabling-multidex-support

在终端上执行 flutter run --debug,当出现Do you want to continue with adding multidex support for Android? [yln]提示时,选择y

问题2
在程序中如何监听某一个变量是否发生了改变

ValueNotifier<int> count = ValueNotifier(0);// 注册监听器
count.addListener(() {print("Count changed: ${count.value}");
});// 修改变量的值
count.value = 1; // Count changed: 1

模拟请求超时
dio中可以判断是否请求超时,最近在做一个功能,需要模拟请求超时。
有时候程序一直在等待执行结果,如果执行时间比较久,就会影响到后续的执行。通过模拟请求超时,来出现长时间的等待问题。

Future<int> performTask() async {await Future.delayed(Duration(seconds: 3)); // 模拟一个耗时的异步操作return 42; // 返回执行结果
}void main() {performTask().timeout(Duration(seconds: 2), onTimeout: () {return -1; // 在超时时返回-1}).then((result) {print('执行结果:$result');}).catchError((error) {print('发生错误:$error');});// 或者int res = await performTask().timeout(Duration(seconds: 2), onTimeout: () {return -1; // 在超时时返回-1}).then((result) {print('执行结果:$result');return result;}).catchError((error) {print('发生错误:$error');});
}

问题3

在使用Android Studio的Device Explorer 向外到处文件时提示:

Error opening contents of device file "hello.txt": Cannot create directory C:\Users\octop\Documents\AndroidStudio\DeviceExplorer\emulator-5554\sdcard\Download\hello

在这里插入图片描述
解决方案:在终端里运行 adb root
如果提示’adb’ 不是内部或外部命令,也不是可运行的程序或批处理文件”,那么就需要配置环境变量。
1、找到sdk所在的文件夹
在这里插入图片描述
在这里插入图片描述
2、在sdk目录里找到adb.exe文件
在这里插入图片描述
3、选择系统变量,在path添加adb程序所在路径
在这里插入图片描述
4、执行完adb root后,重启Android studio后可以顺利到处文件
在这里插入图片描述
问题4
在访问http开头的网络时,报错提示:

WebResourceError{description: net::ERR_CLEARTEXT_NOT_PERMITTED, type: UNKNOWN}

原因是:从Android 9(API级别28)开始,默认情况下,Android应用程序不允许加载不安全的非加密网络资源。这意味着如果你的应用程序尝试加载使用HTTP协议的资源,将会引发net::ERR_CLEARTEXT_NOT_PERMITTED错误。

解决:打开android/app/src/main/AndroidManifest.xml 文件,添加 android:usesCleartextTraffic="true" 再重新编译程序
在这里插入图片描述
问题5
有时候会遇到这样的app,在启动时需要授予权限,当拒绝授予权限后,app会自动退出。这个功能可以基于permission_handlerEasyLoading 两个插件来实现,关于这两个插件的基本使用见:

Flutter:视频下载案例

Flutter:EasyLoading(loading加载、消息提示)

代码如下,需要在main.dart里使用

class MyApp extends StatelessWidget {const MyApp({super.key});// 应用权限请求void requestMultiplePermissions(BuildContext context) async {Map<Permission, PermissionStatus> status = await [// 网络权限Permission.storage,].request();// 判断是否存在权限未授予的情况bool hasPermission = status.values.every((status) => status.isGranted);if (!hasPermission) {EasyLoading.showToast("获取权限失败,应用无法正常运行");await Future.delayed(const Duration(seconds: 2));exit(0);}}Widget build(BuildContext context) {// 进行权限请求requestMultiplePermissions(context);return  MaterialApp(// 应用的主题、页面等配置home: MyHomePage(),);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/478273.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker jenkins 报错:script.sh.copy: 1: mvn: not found

找不到mvn,一般是没配置环境变量的问题。点开系统配置&#xff0c;设置环境变量即可

【mediasoup-sfu-cpp】发送端给nack缓存包

发送端的处理。D:\XTRANS\soup\mediasoup-sfu-cpp\worker\src\RTC\RtpStreamSend.cppRtpStreamSend::ReceiveNack D:\XTRANS\soup\mediasoup-sfu-cpp\worker\src\RTC\RtpStreamSend.cpp 发送端:根据FeedbackRtpNackPacket里的每个包填充要响应重传而发送的包 挨个填充vector,…

C#系列-Entity Framework 架构(18)

下图展示了EF的整体架构。现在让我们逐个地看看架构的各个组件&#xff1a; EF组件图 EDM&#xff08;Entity Data Mode 实体数据模型&#xff09;:EDM 由三个主要部分组成&#xff1a;概念模型&#xff0c;映射和存储模型。 Conceptual Model&#xff08;概念模型&#xff0…

科技云报道:云原生是大模型“降本增效”的解药吗?

科技云报道原创。 在过去一两年里&#xff0c;以GPT和Diffusion model为代表的大语言模型和生成式AI&#xff0c;将人们对AI的期待推向了一个新高峰&#xff0c;并吸引了千行百业尝试在业务中利用大模型。 国内各家大厂在大模型领域展开了激烈的军备竞赛&#xff0c;如&#…

【鸿蒙系统学习笔记】ArkTS开发语言

一、背景 ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript&#xff08;简称TS&#xff09;生态基础上做了进一步扩展&#xff0c;继承了TS的所有特性&#xff0c;是TS的超集。 二、基本语法 2.1、基本语法介绍 ArkTS的基本组成&#xff0c;资料来自…

AI专题:AI浪潮,海外日新月异,国内奋力追赶

今天分享的是AI系列深度研究报告&#xff1a;《AI专题&#xff1a;AI浪潮&#xff0c;海外日新月异&#xff0c;国内奋力追赶》。 &#xff08;报告出品方&#xff1a;方正证券&#xff09; 报告共计&#xff1a;24页 来源&#xff1a;人工智能学派 智算三方面奠基生产力革…

STM32学习笔记(七) —— DMA传输(MTM)

DMA&#xff0c;全称是Direct Memory Access&#xff08;直接内存访问&#xff09;。可以在存储器和存储器之间或者外设和存储器之间传输数据&#xff0c;而不需要CPU的干预&#xff0c;这样可以节省CPU的资源&#xff0c;提高工作效率。 1.功能框图 STM32F103RCT6有两个DMA控…

力扣773. 滑动谜题(BFS)

Problem: 773. 滑动谜题 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 由于题目提到最小步数&#xff0c;则可以使用BFS来穷举出最小的结果 1.转换为BFS问题&#xff1a;由于0代表空着的可以移动的位置&#xff0c;所以我们只需要从当前位置和0的相邻位置移动从而转…

代码随想录刷题笔记-Day20

1. 二叉树的最近公共祖先 236. 二叉树的最近公共祖先https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/ 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&#x…

ARM体系在linux中的中断抢占

上一篇说到系统调用等异常通过向量el1_sync做处理&#xff0c;中断通过向量el1_irq做处理&#xff0c;然后gic的工作都是为中断处理服务&#xff0c;在rtos中&#xff0c;我们一般都会有中断嵌套和优先级反转的概念&#xff0c;但是在linux中&#xff0c;中断是否会被其他中断抢…

Cannot invoke “java.sql.Connection.prepareStatement(String)“ because “conn“

下载sqlite-jdbc&#xff0c;放在目录下&#xff0c;然后IDEA右键jar文件选择“加入库”即可解决 Central Repository: org/xerial/sqlite-jdbc/3.36.0.1

JavaScript 的location 对象API 介绍

JavaScript 中&#xff0c;location 对象提供了访问当前页面 URL 相关信息的属性和方法。通过 location 对象&#xff0c;我们可以获取当前页面的 URL、查询参数、锚点等信息&#xff0c;并且可以使用 JavaScript 来修改当前页面的 URL。 以下是一些 location 对象的常用属性和…