demo效果:
flutter 学习参考:https://space.bilibili.com/64169458/channel/detail?cid=131083
flutter 链接模拟器 在安装目录bin目录下 执行 shell : adb connect 127.0.0.1:port
host 可以在模拟器配置中查看 如逍遥模拟器的配置目录:放模拟器的文件盘\Microvirt\MEmu\MemuHyperv VMs\MEmu\MEmu.memu
这个文件中 的hostport
flutter icon 库: http://fluttericon.com/ https://material.io/resources/icons
flutter 包地址:https://pub.flutter-io.cn/
专利查询:http://www.soopat.com/Home/Result?SearchWord=flutter&FMZL=Y&SYXX=Y&WGZL=Y&FMSQ=Y&PatentIndex=30
框架搭建思路
安装flutter、手机模拟器
调试demo
路由
请求
状态管理
本地存储
flutter 库的安装
flutter pub add **库
网络请求库 dio 官方推荐, cookie 处理相关 cookie_jar、dio_cookie_manager
库版本问题:
解决:
路由工具使用 fluro 官方推荐
提示找不到Router类 用FluroRouter替换
如果你的BottomNavigationBar的item数量大于3,那么必须设置 type: BottomNavigationBarType.fixed,否则会出现颜色变白,文字消失等问题
刘海屏参考:https://www.jianshu.com/p/63c0b6cc66fd
本地存储参考:https://www.imooc.com/article/285750 官方推荐库 shared_preferences
状态管理 :provider: 官方推荐
flutter doctor运行失败5([!] Android Studio (not installed))
你安装了 Android Studio ,只是路径是自定义的,所以给Flutter指定你的路径吧
flutter config --android-studio-dir=“D:\Android Studio”
注:路径有空格所以路径加引号,没有空格可不加
然后运行flutter doctor基本上就成了
问题:
解决:
flutter 使用iconfont 图标:https://www.jianshu.com/p/960ee951a1b5
组件内的角标 widgets : badges
flutter 社区贡献widgets 地址:http://code4flutter.com/
listview 不能直接在 row colum 中使用 外部需要使用Expanded组件包裹
padding、margin 的 value值得类 EdgeInsets.all(8) web端对应: padding: 8px;(单位不一定是px)
Column 定义子元素排列方式的类 : CrossAxisAlignment (横轴方向)
webview 的库: 官方推荐: webview_flutter 此库可嵌入flutter widget 中 其它好像不行
IOS 模块的 Runner 中的 info.plist 文件中加入:
<key>io.flutter.embedded_views_preview</key>
<string>YES</string>
Flutter WebView无法加载HTTP请求参考:https://blog.csdn.net/fclwd/article/details/107090889
flutter 生命周期
@override
createState() {
print('sub create state');
return SubState();
}
@override
initState() {
print('init state');
super.initState();
}
@override
didChangeDependencies() {
print('did change dependencies');
super.didChangeDependencies();
}
@override
didUpdateWidget(MyHomePage oldWidget) {
print('did update widget');
super.didUpdateWidget(oldWidget);
}
@override
deactivate() {
print('deactivate');
super.deactivate();
}
@override
dispose() {
print('dispose');
super.dispose();
}
@override
reassemble() {
print('reassemble');
super.reassemble();
}
获取照片或拍照:image_picker
高德地图官方
地图:amap_flutter_map
定位:amap_flutter_location
按官方教程配好配置后,用android studio 打开一下android项目,会自动安装相关包
地图闪退:模拟器闪退参考:https://blog.csdn.net/z2008q/article/details/108621188,
关键代码
真机闪退未找到原因,但使用3d地图SDK解决
权限处理包:permission_handler
真机调试定位错误
解决: 复制日志中不匹配的sha1值到调试版安全码SHA1中,就可解决
字符换行
// 方法一
List readLines = ['Test1', 'Test2', 'Test3'];
String getNewLineString() {
StringBuffer sb = new StringBuffer();
for (String line in readLines) {
sb.write(line + "\n");
}
return sb.toString();
}
方法二
String= '''Text1
Text2
Text3'''
解决: 在项目根目录执行: flutter clean
状态widget 生命周期:deative() 或dispose() 中无法使用状态管理器 Provider 来做一些处理,会报类似未构建完成执行设置state得错误, 替代方案:form得onWillPop或 WillPopScope 这个widget
TextFormField 不能同时使用initialValue和controller ,会报错
时间选择器: flutter_datetime_picker 第三方
时间格式化:date_format 第三方
嵌入的网页报错:
是因为没添加网络权限
解决:
使用阿里icon 构建报错:
解决Icon前加入const修饰前缀
keystore 设置示例:
远程图片不显示
1 未添加网络权限
2 模拟器未链接网络
**flutter upgrade 升级报错 **
ProcessException: Process exited abnormally:
fatal: unable to access 'https://github.com/flutter/flutter.git/': OpenSSL SSL_read: Connection was reset, errno 10054
Command: git fetch --tags
原因及解决方式
原因连不上github,解决办法把flutter远程地址更换为码云,并且以后有依赖在github上下载不了,可以去国内的仓库平台码云找,官方都会提供同步,小项目就只有自己去建个库同步。
配置系统环境变量
FLUTTER_GIT_URL=https://gitee.com/mirrors/Flutter.git
执行更新(权限不够换管理员终端)
flutter upgrade --force