flutter 开发的各种工具app合集。持续更新中。截图预览
Android 端已经完全适配。
ios端已经基本适配完成,有待进一步测试。
当前项目使用的第三方库:
#状态管理框架
get: ^4.6.6
# 屏幕适配框架
flutter_screenutil: ^5.9.0
#本地数据库
objectbox: ^1.6.2
objectbox_flutter_libs: ^1.6.2
#打开网站
url_launcher: ^6.1.14
#网络
dio: ^5.3.3
#ios android 图片保存,其他平台另外处理。
image_gallery_saver: ^2.0.3
#ios android平台权限申请框架
permission_handler: ^11.0.0
#图片查看工具
photo_view: ^0.14.0
#视频播放器
video_player: ^2.7.2
chewie: ^1.7.1
#扫码
mobile_scanner: ^3.4.1
#生成二维码
qr_flutter: ^4.1.0
#异步框架
async: ^2.11.0
#可视区域检测
visibility_detector: ^0.4.0+2
#将Widgetc转成Image
widgets_to_image: ^0.0.2
#本地存储工具
shared_preferences: ^2.2.1
#高德插件
amap_flutter_base: ^3.0.0 #基础库
amap_flutter_map: ^3.0.0 #地图库
amap_flutter_location: ^3.0.0 #定位库
easy_refresh: ^3.3.2+1
Pexels
需要申请一个APIKey 用于图片和视频的数据请求-连接地址
- 注册一个Pexels的账号
- 在个人信息中
图片和视频API
中查看你的KEY。然后可以修改项目中代码替换,也可以运行项目之后在pexels页面,底部导航栏key选项修改。
高德地图
去官网申请自己的高德地图API-key 连接地址
- 需要同时申请
Android端
apikey 和ios端
apikey - Android端在
android/local.properties
文件中添加一行amap_key=***
,***
是你申请的key。注意不要有""
双引号。 - IOS端适配中。。。fk
权限申请框架根据需要修改配置。
- Android 端没啥说的。都已经在清单文件增加了。应该不用动。
- ios端,虽然我吧Podfile 和 Podfile.lock 上传了。免不了会出现问题,权限在Podfile中有表明,用到什么权限解除注释即可。还要在ios项目的info.list清单中增加队。如果知道权限对应的系统描述符是什么,也可以在XCode的图形化界面进行添加权限
Runner->Info->Custom iosTarget Properties
目标文件就是/ios/Runner/info.plist
permission_handler
需要在ios端的Podfile中增加一下代码,用到哪个解除哪个的注释就行。找到post_install do |installer|
这行代码,然后一行一行对应着哪里不同添加哪里。
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
target.build_configurations.each do |config|
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
'$(inherited)',
## dart: PermissionGroup.calendar
# 'PERMISSION_EVENTS=1',
## dart: PermissionGroup.reminders
# 'PERMISSION_REMINDERS=1',
## dart: PermissionGroup.contacts
# 'PERMISSION_CONTACTS=1',
## dart: PermissionGroup.camera
'PERMISSION_CAMERA=1',
## dart: PermissionGroup.microphone
# 'PERMISSION_MICROPHONE=1',
## dart: PermissionGroup.speech
# 'PERMISSION_SPEECH_RECOGNIZER=1',
## dart: PermissionGroup.photos
'PERMISSION_PHOTOS=1',
## dart: [PermissionGroup.location, PermissionGroup.locationAlways, PermissionGroup.locationWhenInUse]
# 'PERMISSION_LOCATION=1',
## dart: PermissionGroup.notification
# 'PERMISSION_NOTIFICATIONS=1',
## dart: PermissionGroup.mediaLibrary
# 'PERMISSION_MEDIA_LIBRARY=1',
## dart: PermissionGroup.sensors
# 'PERMISSION_SENSORS=1',
## dart: PermissionGroup.bluetooth
# 'PERMISSION_BLUETOOTH=1',
## dart: PermissionGroup.appTrackingTransparency
# 'PERMISSION_APP_TRACKING_TRANSPARENCY=1',
## dart: PermissionGroup.criticalAlerts
# 'PERMISSION_CRITICAL_ALERTS=1'
]
end
end
end
ios端有些坑需要避一下,对于Android原生开发,ios是个盲区啊。我艹了。
如果没有Podfile或者你想修改Podfile。现在假设没有。在终端中进入ios/
目录执行命令 flutter build ios
会创建Podfile和Pods/目录。
然后再执行命令 pod install
会安装对应的第三方依赖库,生成Podfile.lock文件。
如果提示找不到.symlinks/目录下的XXX文件。90%是tm第三方库插件的问题,这让我换了好多库,气死了。
进行ios
构建的时候,可能会报版本不适配的错误,由于第三方库插件的最低适配IOS Version
低导致的。例如我这里是 11,插件的最低版本是 9,就会报错。根据XCode的错误提示,对第三方库的配置信息进行修改即可。
编译注意事项
android 编译的时候默认是开启混淆的,所以集成的第三方sdk一定要配置混淆信息,如果要单独打开android项目,flutter的 SDK要和项目在同一个磁盘下,sdk在D盘项目位置也要在D盘。并且要设置环境变量PUB_CACHE在同一个磁盘下,例如D:\SDK\cache\pub。 这样单独打开Android项目的时候才不会报错,这是官方的一个BUG,但是引起的原因未知。