2024-04-13
bodyBytes
响应
请求头
响应头
flutter
乱码
我们一般发请求,会使用一个很流行的第三方包http来发请求。
如果我们没有在请求头中设置utf-8的编码,它默认也是用UTF-8的编码格式向服务器发请求的。
另外,如果服务器响应的时候,响应头没有指定响应类型的编码,而它发过来的即便确实是个UTF-8的编码格式,根据dart的默认习惯,未检测到响应类型编码,会默认以latin-1的编码形式来解码,这就会大概率导致乱码。
…
2024-04-13
无法拖拽文件
windows
flutter
我碰到的问题是调试模式下没办法拖拽。
即便使用了第三方包desktop_drop和cross_file,还是这样。
但是一旦构建之后就能正常运行了。
…
2024-04-12
数据库
sqlite3
sqflite_common_ffi
flutter
我用flutter写了一个windows端的应用程序,这个程序因为要使用到数据库,所以引入了第三方包sqflite_common_ffi
我使用这样的命令引入的import 'package:sqflite_common_ffi/sqflite_ffi.dart';
但是当我最终使用flutter build windows
命令打包了一个exe的可执行程序之后,发现运行的时候压根儿弹不出窗口,只在后台进程显示相应的进程,因为此时我已经用的是比较新的flutter版本(3.16)了,所以跟网上流传的那个不弹出窗口的BUG其实并不一样。这里之所以不弹出来,估计是构建程序没有把数据库的动态链接库文件(使用这个sqflite_common_ffi其实用的是流传很广的那个sqlite3的功能,所以需要SQLite3.dll这个文件)打包进来,导致只有一个孤零零的flutter_windows.dll文件。只需要网上搜索这个同名的文件,下载后,把该dll文件放到exe所在的同级目录即可。
……
2024-04-12
flutter doctor
cmdline-tools
路径
flutter
先要到安卓studio官网下载sdkmanager的zip文件。就是那个仅限命令行工具下的一百多兆的文件。
解压之后会得到一个文件夹,里面有些bin和lib之类的文件夹,还有一两个文本文件。
先找到安装AndroidSDK的目录,如果里面没有cmdline-tools这个文件夹,就手动建立一个,cmdline-tools里面还需要建立一个latest文件夹,再把刚才这几个又是bin和lib,又是文本文件的内容复制到latest下面。
…
2024-04-12
界面重构
监视
riverpod
flutter
如图,我预期的效果是:点击删除按钮,会删除勾选项,并退出编辑状态,同时隐藏删除按钮。
实际运行效果却是只退出了编辑状态,并未隐藏删除按钮。
…
2024-04-12
调试
定位异常
exception
flutter
当运行程序出现异常的时候,虽然会定位到具体的代码,但是却指向的是flutter自带的代码,这种大段代码看起来就比较费时间。
一个有效的做法是,当出现异常后,点击vscode上方的调试错误的那个横条工具栏。里面一般在左边有一个一步一步往下运行的按钮,点击它,直到在调试控制台出现异常报错信息。
这个时候调试控制台就会很贴心地给出出错的代码是在哪个组件的哪行代码处出的问题。
…
2024-04-12
dart
必填项
有状态组件
flutter
class MyCustomWidget extends StatefulWidget {
final int sortid;
const MyCustomWidget({
……
2024-04-12
捕捉鼠标
Listener
flutter
这里面有两个坑。
1.当使用鼠标时,这种onPointerMove只在按下鼠标左键之后才能触发。
2.如果没有设置behavior属性,或者behavior属性的值没设置对,也不会生效。似乎是因为没给它里面加子组件,导致命中判定的时候会出问题。
…
2024-04-12
flutter
调试器
widget tree
Widget Inspector
刚接触flutter,写了两个页面,通过按钮,可以从主页面跳转到副页面,副页面我自己写的一个独立的dart文件,在主页面的代码中导入使用。但是当我运行代码后,点击跳转的时候,却发现查看不到对应的副页面的widget tree结构。原来需要把右侧的Widget Inspector上方那个选择按钮打开
接着在运行后的界面(是那个实际运行起来的程序界面,而非调试器下这些东西)上,点击副页面上任意元素,即可自动打开副页面的组件树(widget tree)了。
…