边学边写flutter
写在前面
第一次接触flutter在18年的时候,那时候的flutter还像个刚出生的婴儿,无论是SDK还是社区的支持都不是很完善。经过两年时间,社区博客,和各大公司都开始关注flutter,可以明显的感觉flutter真正火起来了,于是产考了Android_zhu_jiang的《历时三天,完成了Flutter版本的玩安卓》项目,自己边学边写花了一周时间写完了自己的第一个flutter项目,因为没有mac所以全程是在windows环境下开发,在安卓系统调试,所以没有对ios系统做过测试,不知道是否能够正常运行。
开发过程中遇到的问题:
首先是闪屏页,根据网上的一些方案,是在MaterialApp下将home设置成闪屏页,然后在计时结束之后跳转到内容页面并将其关闭,但是这就导致MaterialApp被回收而无法操作所以无法修改主题,所以我通过标识符来动态改变MaterialApp下home的内容来实现闪屏页,具体代码如下:
child: MaterialApp( //取消显示debug debugShowCheckedModeBanner: false, //注册路由观察者 navigatorObservers: [BotToastNavigatorObserver()], theme: ThemeData( primaryColor: ColorUtil.currentThemeColor, //右滑返回 platform: TargetPlatform.iOS, ), title: "玩安卓", home: _showSplashPage ? SplashPage() : HomeView(), ),
_countDown() { var duration = Duration(seconds: 3); Future.delayed(duration, () { setState(() { _showSplashPage = !_showSplashPage; }); }); }
第二是使用flutter_webview_plugin插件时,showModalBottomSheet无法正常显示,所以将插件改为了官方提供的webview_flutter,
第三是在cookie的持久化管理时,因为cookie在web端使用比较频繁,而移动端较少使用导致不够了解,所以花了较长时间,最后通过dio_cookie_manager插件来做cookie持久化实现了效果。
第四,由于flutter的生命周期没有类似安卓的onResume,而无法在当前页面修改了上一页的item数据时,实时刷新上一页的list数据,导致在修改关注时,返回上一页重新进入时关注状态错误。
解决方案可以采用EventBus去通知需要更新的list,因为效果不是很满意,所以就没有具体编码实现了
第五,使用过程中发现flutter的WebView无法播放视频,在官方的文档中也没找到视频播放的接口,所以暂时没有解决
工作过程中遇到的话,可能只能采用nativi去实现了,如果有知道怎么播放视频的大佬喜欢可以留言告知
总结
通过一个demo写完,感觉flutter虽然已经比较完善,但是依然有很多功能没办法很好的实现导致只能采用nativi混合开发来实现。
最后上一下界面
下一篇: 强转失败的情况,父类转子类。