flutter java混编_Flutter 混合开发实战问题记录(四)编译运行时问题的一些总结(随时补充)...

项目中的一些模块用flutter重新开发后在两次云测和灰度少量渠道后发现了些问题,分为两类:

一个是非编译/运行时问题,即dart语法使用错误或widget布局错误使用出现的问题

因为这类问题对于所有人几乎都会遇到,不再详细说解决方案,只简单罗列下我遇到的,提醒别人注意即可:

一、非编译/运行问题

1 黑黄相间提示:内容溢出

需要显示的内容超出了widget容器或屏幕的范围会出现,一般放入滚动容器中可解

2 image组件的封装

因为官方image组件提供了类似scaleType的属性:fit,当出现图片宽大于高,或高大于宽时,fitWidth或fitHeight就直接替换为BoxFit.cover吧,可以做下兼容,另外因为原生组件没有提供磁盘缓存功能,可以自己实现或直接加载个三方库,比较推荐 flutter_cached_network_image ,然后可以封装自己的imageloader了, 我写了个简易的例子

3 刘海屏适配:用 SafeArea 防止带刘海的屏幕,或者iPhonex 底部bottom 的页面显示异常

class FlutterAlign extends StatelessWidget {

@override

Widget build(BuildContext context) {

return SafeArea(

child: Align(

alignment: Alignment(-1, 1),

child: Container(

child: Text(

"Hello",

),

),

),

);

}

}

复制代码

4 关于toast

flutter作为一款UI框架,使用原则貌似是只要是实现不复杂,原生非不可替代的控件都应该用flutter来做,不过toast这个东西为了保持跟原生界面一致性,还是调用原生吧,不过我遇到的一个小问题是:有个界面有可能需要快速频繁提示toast,而且原生代码中使用的toast是自定义的不排队toast(继承Toast),由于内部机制,快速插入toast队列信息会造成系统等待,短时间不再响应toast弹出,解决方案可以是按钮控制节流(throttle)或防抖(debounce),也可以优化下toast排队机制。

不过最后还是决定用flutter做一个备用吧,网上的多数方案是使用Overlays

Overlays通过把子widget插入到overlay的stack里面, 让依赖它的子widget可以浮在其它的可见元素上面。OverlayEntry可以管理漂浮的widgets。(一个OverlayEntry就是一

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值