Flutter的热重新加载(Hot Reload)功能主要用于快速更新代码逻辑,但在处理资源文件(如图片、字体、配置文件等)时可能存在不自动刷新的情况。以下是详细解析和解决方案:
main()
函数变更、全局变量初始化等。pubspec.yaml
中定义的assets
)。flutter build
流程,设备仍使用旧资源缓存。pubspec.yaml
未更新pubspec.yaml
或未重新运行flutter pub get
。PlatformAssetBundle
)。Hot Restart
(VS Code快捷键Ctrl+F5
,Android Studio为Shift+Ctrl+⇧+⏎
),完全重启应用以重新加载所有资源。pubspec.yaml
配置确保资源路径正确且已保存,并重新获取依赖:
flutter:
assets:
- assets/images/ # 目录需存在且路径正确
运行:
flutter pub get
在代码中为资源URL添加时间戳参数(仅开发时使用):
Image.asset(
'assets/images/logo.png?t=${DateTime.now().millisecondsSinceEpoch}',
);
DerivedData
目录:DerivedData
目录:使用flutter_tools
的--filesystem-scheme
选项(实验性):
flutter run --filesystem-scheme org-dartlang-root
Hot Restart
或flutter run
重新加载资源。flutter build apk/ios
)更新。http
或path_provider
)。import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
child: Image.asset('assets/test.png'), // 确保图片路径正确
),
),
);
}
}
验证步骤:
test.png
文件内容。Hot Restart
观察是否更新。Flutter热重载不刷新资源是预期行为,因资源打包机制与代码注入策略不同。通过强制重启、清理缓存或调整加载策略可解决问题。开发时建议结合Hot Reload
(代码)和Hot Restart
(资源)混合使用以提高效率。
没有搜到相关的文章