- TextField焦点unfocus在GestureDetector的手势在Stack中不响应的问题:在GestureDetector中包裹Stack发现无法触发GestureDetector的OnTap函数,没找到原因。通过对Stack内部、外部的相应Container均设置一个colors:Color(0x00000000)完全透明的背景底色,可以暂且解决这个问题。
- Text组件,汉字相比英文出现文字下移、无法对齐、上下间距不一致、不居中的情况:与中文汉字的行间距属性有关,在TextStyle中设置height:1,可令中文汉字于Text组件的实现居中。
- 国际化组件flutter_localizations与IOS风格Dialog冲突:原因不明,暂且卸载国际化,更推荐别使用IOS风格Dialog。
- 报错DioError [DioErrorType.DEFAULT]: FormatException: Unexpected character (at character 1):dio请求返回的数据默认是以json的格式读取的,而返回的数据如果是字符串,需要设置dio的Options的responseType为ResponseType.plain,才能正常读取。
- 在FutureBuilder中使用ListView.builder,报错 RenderFlex children have non-zero flex but incoming height constraints are unbounded.:其内自定义Widget必须指定高度。
- 使用flutter_slidable插件,在其内部SlidableAction的context存在空值问题,报错Unhandled Exception: Null check operator used on a null value,StatelessElement (DEFUNCT)(no widget):此处有老哥使用Builder(builder:(context){})的方法重新获得context,或另外设置引用全局context替换SlidableAction中的context(测试后无报错)。
- 高德地图AMapWidget对象使用setState无反应无法更新地图标记:在Widget build中实例化而非在initSatte中实例化对象。
- Hive的box在cast处理后,读取自定义List<T>类时可能出现报错type 'CastList<dynamic, T?>' is not a subtype of type 'List<T>':尝试修改失败,暂且在读取时做一次如下转换处理
List<T> _trans(dynamic castList){ List<T> list = []; castList.forEach((e){ list.add(e); }); return list; }
-
打包后release模式下出现权限错误java.lang.IllegalAccessError: Illegal class access :'androidx.appcompat.widget.ContentFrameLayout' attempting to access
'androidx.appcompat.app.r':先更新permission_handler至9.0.2以上版本(也可能和image_picker,camera等插件有关,都可以更新下),再Open Android module in Android Studio,然后进入File>Project Structuregradle,设置Gradle版本6.7,补丁4.0.1,同步,大约可以解决 -
Ink.image图片需要包裹Material才能在Column中显示
-
FocusScopeNode的nextFocus失效:使用FocusScopeNode管理FocusScope中TextField时,如果中间带有含focusNode属性的比如Button等组件时,需要在这些button中声明:
focusNode: FocusNode(skipTraversal: true),
如此可以跳过它,使得nextFocus成功生效
个人实践Flutter心得小技巧
于 2021-09-29 15:38:22 首次发布