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

本文记录了在Flutter与Java混编项目中遇到的非编译/运行时问题及编译运行时问题,包括dart语法错误、图像组件封装、刘海屏适配、toast实现、错误处理等,并给出了相应的解决方案,例如使用SafeArea、自定义FlutterToast和处理Dio库异常等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目中的一些模块用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。(一个Overla

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值