flutter开发一个月可以做出什么东西
前言
上手flutter 差不多一个月 的时间了,总结一下吧!毕竟沉淀(摸鱼)两个月了,还是得重新记录记录下。
先说一下本来是打算空闲时间写个app来玩耍一下的,一开始本来想用原生安卓的,后来又想跨平台.然后就筛选了3个方案
我已经上手flutter 快一个月了,让我们总结一下! 毕竟,它已经沉淀(摸鱼)了两个月,所以我必须再次记录下。
首先,我说我最初打算编写一个在业余时间玩的应用程序。 最初,我想使用原生Android,然后想跨平台。 然后我筛选了3个计划。
react-native: facebook旗下的,但是网上找了下资料,发现大多数都是几年前的,在说对react不是特别熟悉。 故放弃。
uni-app:国内团队,目前公司小程序就是用的这个,不想在入坑了。故放弃。
flutter: 谷歌开源,国内也有很多公司在使用,比如最早的 闲鱼,然后上手写了个demo感觉还不错,再加上本身就是个UI框架。最终决定使用flutter开发。
在当时决定时我是根本没有接触过flutter的,就当作学习了,给予最大帮助的还是github(全球最大的同性交友网站gayhub),官方文档。 也就每天下班后和周末有时间可以写写
什么是flutter?
Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。简单来说,Flutter是一款移动应用程序SDK,包含框架、控件和一些工具,可以用一套代码同时构建Android和iOS应用,并且性能可以达到原生应用一样的性能。详情请参考Flutter简介 。
flutter使用心得
从我的观点来看的话 flutter还是很不错,生态也在慢慢的发展,就是这个套娃语法有时候看着有点吃力,不过拆分一下还是可读的。
目前flutter的第三方库还是能满足日常的app的,反正我写个视频类的app还是行的,说到这就得吐槽下flutter的视频方面感觉比较弱一点,官方的video player 又太麻烦,比较出名点的有chewie、fijkplayer。支持自定义UI。 可能部分手机会有掉帧的情况,网上也有人遇到过,不过我身边除了我的手机好像并没有出现这样的情况(oneplus 5T 钉子户) 写到这突然就不知道怎么写了,感觉很乱,还是结合一下具体项目说一下吧。
开源 alltv 一个app看全网主播
写这个app也只是为了图个方便,在一个想学学新的的东西。
路由管理 fluro
其实本身app页面并不多,flutter原生路由也可以满足,但还是决定用下框架,项目使用fluro很痛心的一点,框架本身并不支持中文参数,所以得手动处理。 详情请见
网络请求 dio
dio是Flutter中文网开源的一个强大的Dart Http请求库,支持Restful API、FormData、拦截器、请求取消、Cookie管理、文件上传/下载、超时等。 dio
视屏播放器
采用 开源fijkplayer作者好像也在掘金。基于b站开源的ijkplayer 具体请见 fijkplayer
其他的就不详细说了
dependencies:
flutter:
sdk: flutter
# storage
shared_preferences: ^0.5.6+3
# 状态管理
provider: ^4.0.5+1
# 屏幕适配
flutter_screenutil: ^1.1.0
# 路由管理
fluro: "^1.6.3"
# 下拉刷新
pull_to_refresh: ^1.5.7
# toast
fluttertoast: ^4.0.0
# 网络请求
dio: ^3.0.9
cached_network_image: ^2.2.0
#websocket
web_socket_channel: ^1.1.0
# 视频播放
fijkplayer: ^0.8.3
crypto: ^2.1.3
cupertino_icons: ^0.1.2
JSON to Dart
安利一个比较方面的工具,flutter是不支持反射的,那么后端获取的json 怎么快速转成对象呢? 那么这个网站比较方便 json to dart
flutter 踩坑日记
flutter build apk 真机无法请求网络
具体原因是安卓高版本默认不开启网络访问权限,需要自己手动开启, 在这个文件里,android\app\src\profile\AndroidManifest.xml,manifest 里添加这段代码:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
你以为就完了?还有呢,在src\main下面也有一个AndroidManifest.xml,同样需要相同的操作,主要不要放到application下了。
不能访问http请求
原因:IOS和Android 9.0+对非HTTPS请求做了一些限制,不能直接访问Http请求,在Android中会出现net:ERR_CLEARTEXT_NOT_PERMITTED的错误 解决办法:
在src/res/xml下面创建network_security_config.xml,配置如下所示:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
在src\main下的AndroidManifes.xml上添加:
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application android:networkSecurityConfig="@xml/network_security_config">
<!-- ... -->
</application>
</manifest>
其实项目中往往不止这些坑,只不过当时没记录,这时候你很难想到了。
项目地址
传送门:github apk:蓝奏云
END
如果觉得对你有所帮助,那就麻烦点个Star,谢谢!
作者:HarryZhang6
来源:掘金