个人实践Flutter心得小技巧

  1. TextField焦点unfocus在GestureDetector的手势在Stack中不响应的问题:在GestureDetector中包裹Stack发现无法触发GestureDetector的OnTap函数,没找到原因。通过对Stack内部、外部的相应Container均设置一个colors:Color(0x00000000)完全透明的背景底色,可以暂且解决这个问题。
  2. Text组件,汉字相比英文出现文字下移、无法对齐、上下间距不一致、不居中的情况:与中文汉字的行间距属性有关,在TextStyle中设置height:1,可令中文汉字于Text组件的实现居中。
  3. 国际化组件flutter_localizations与IOS风格Dialog冲突:原因不明,暂且卸载国际化,更推荐别使用IOS风格Dialog。
  4. 报错DioError [DioErrorType.DEFAULT]: FormatException: Unexpected character (at character 1):dio请求返回的数据默认是以json的格式读取的,而返回的数据如果是字符串,需要设置dio的Options的responseType为ResponseType.plain,才能正常读取。
  5. 在FutureBuilder中使用ListView.builder,报错 RenderFlex children have non-zero flex but incoming height constraints are unbounded.:其内自定义Widget必须指定高度。
  6. 使用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(测试后无报错)。
  7. 高德地图AMapWidget对象使用setState无反应无法更新地图标记:在Widget build中实例化而非在initSatte中实例化对象。
  8. 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;
      }

  9. 打包后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,同步,大约可以解决

  10. Ink.image图片需要包裹Material才能在Column中显示

  11. FocusScopeNode的nextFocus失效:使用FocusScopeNode管理FocusScope中TextField时,如果中间带有含focusNode属性的比如Button等组件时,需要在这些button中声明:

    focusNode: FocusNode(skipTraversal: true),

    如此可以跳过它,使得nextFocus成功生效

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值