- 全局变量和静态成员变量,这些变量
不会在热刷新时更新。 - 修改了main函数中创建的根控件节点,Flutter在热刷新后只会根据原来的根节点重新创建控件树,不会修改根节点。
- 某个类从普通类型转换成枚举类型,或者类型的泛型参数列表变化,都会使人刷新失败。
热刷新无法实现更新时,执行一次热重启(Hot Restart)就可以全量更新所有代码,同样不需要重启App,区别是restart会将所有Dart代码打包同步到设备上,并且所有状态都会重置。
Flutter插件
Flutter使用的Dart语言无法直接调用Android系统提供的Java接口,这时就需要使用插件来实现中转。Flutter官方提供了丰富的原生接口封装:
- android_alarm_manager,访问Android系统的AlertManager。
- android_intent,构造Android的Intent对象。
- battery,获取和监听系统电量变化。
- connectivity,获取和监听系统网络连接状态。
- device info,获取设备型号等信息。
- image_picker,从设备中选取或者拍摄照片。
- package_info,获取App安装包的版本等信息。
- path_provider,获取常用文件路径。
- quick_actions,App图标添加快捷方式,iOS的eponymous concept和Android的App Shortcuts。
- sensors,访问设备的加速度和陀螺仪传感器。
- shared_preferences,App KV存储功能。
- url_launcher,启动URL,包括打电话、发短信和浏览网页等功能。
- video_player,播放视频文件或者网络流的控件。
在Flutter中,依赖包由Pub仓库管理,项目依赖配置在pubspec.yaml文件中声明即可(类似于NPM的版本声明Pub Versioning Philosophy),对于未发布在Pub仓库的插件可以使用git仓库地址或文件路径:
dependencies: url_launcher: “>=0.1.2 <0.2.0” collection: “^0.1.2” plugin1: git: url: