Text 以字符的方式截断
https://github.com/flutter/flutter/issues/52869
在 flutter 中,Text 控件默认的溢出显示模式是 TextOverflow.fade
,就是淡出
在 iOS 或者 Android 平台默认的文件截断模式一般是…省略,flutter 里面对应的截断模式为 TextOverflow.ellipsis
,不过这里的截断是英文按照单词来的,这样的模式会导致如果最后一个单词很长时,截断显示会整理省略而不是最后超出的字符省略,导致模块可能有一大块空白。
Dart 系统定义的截断模式
1 | /// How overflowing text should be handled. |
如何解决英文单词被整体截断呢?
将单词的每个字符切割开,插入宽度 0 的占位字符,打破系统默认的机制,这样就可以以字符为单位省略了
需要注意。这种方式相当于修改了文本的内容,一般文本最大一行显示可以用,如果文本支持 2 行以及以上的显示的话,将会导致换行不再按照字符进行而按照单词进行
下面是 Example 实现
1 | extension TextOverflowUtil on String { |
文本划线
通过 Text 的 decoration 属性来实现划线
- TextDecoration.none 没有
- TextDecoration.underline 下划线
- TextDecoration.overline 上划线
- TextDecoration.lineThrough 中间的线(删除线)
// 划线相关的属性设置
decorationColor decoration 划线的颜色
decorationStyle decoration 划线的样式
- TextDecorationStyle.solid 实线
- TextDecorationStyle.double 画两条线
- TextDecorationStyle.dotted 点线(一个点一个点的)
- TextDecorationStyle.dashed 虚线(一个长方形一个长方形的线)
- TextDecorationStyle.wavy 正玄曲
效果图如下
VS Code 实现保存时自动代码格式化
VS Code 中代码格式化默认快捷键:【Shift】+【Alt】+ F
实现手动保存(Ctril + S)时自动触发代码格式化:
1)Code → Perference → Settting 点击右上角(Open Setting(JSON) )
2)在 settings.json 下的【工作区设置】中添加以下语句:
1 | "editor.formatOnType": true, |
解决 setState() called after diapose()
网络请求成功前退出了页面,该 State 被从对象树卸载掉,而这时回调了网络请求的方法,方法中带有 setState 的调用,也就导致了该问题。
1 | if (mounted) { |
Waiting for another flutter command to release the startup lock…等待另一个 flutter 命令释放启动锁
- 退出 VS Code。
- 打开 flutter 安装目录 如:…\flutter\flutter\bin\cache 删除里面的 lockfile。
- 重启打开 VS Code。
原因:当你的项目异常关闭,下次启动就会出现上面的一行话,
此时需要打开 flutter/bin/cache/lockfile,删除就行了,
或者直接用下面的命令:rm ./flutter/bin/cache/lockfile。
在 Stateless 控件内部或者浮层内部刷新,可以使用 StatefullBuilder
1 | showDialog<void>( |
这里通过 selectedRadio 变量记录 Radio 的是否选中的状态
平台相关的判断
只关心是否是 iOS 和 Android 的情况下不需要依赖 context
,优先使用 Platform
```json
Platform.isAndroid
Platform.isIOS
1 |
|
ScrollView 滑动隐藏键盘
https://stackoverflow.com/questions/55306855/hide-keyboard-on-scroll-in-flutter
使用 ScrollView 的 keyboardDismissBehavior
属性
1 | ListView( |
回调写法
a.无参数回调
VoidCallback
b.有一个参数回调
ValueChanged
c.参数大于一个
可以通过 typedef
自定义一个函数
下面是 Example 用法
1 | final VoidCallback onPressed; |
flutter pub get is stuck
可以通过切换 flutter 镜像到中文站点来解决
使用系统 shell,请编辑
使用 oh_my_zsh, 需要编辑 .zshrc
1 | export PUB_HOSTED_URL=https://pub.flutter-io.cn |
保存文件后,关闭,下次重新打开终端生效
再执行 flutter pub get
查看速度是否正常