Flutter 中的热重启:什么时候和什么时候不?
Hot restart in Flutter: when and when not?
有人可以向我解释一下热重载和重启以及什么时候我不需要这样做(比如需要执行重建的代码更改)以及什么时候我肯定可以。在 Flutter web 和移动设备中调试时,如果我不确定我所做的更改是否影响了结果,我将关闭所有内容并重建项目...对 [=13= 这两种模式的一些见解] 会让我对在调试期间单击的按钮更有信心 ;)
IDE: Android Studio 3.5.1
这来自 Flutter for Android Studio 和 IntelliJ 的官方文档。
热重载与热重启
热重载通过将更新的源代码文件注入 运行 Dart VM(虚拟机)来工作。这不仅包括添加新的 类,还包括向现有 类 添加方法和字段,以及更改现有函数。一些类型的代码更改不能热重新加载:
全局变量初始值设定项
静态字段初始值设定项
app的main()方法
对于这些更改,您可以完全重新启动您的应用程序,而不必结束调试会话。
发件人:https://flutter.dev/docs/development/tools/android-studio#hot-reload-vs-hot-restart
还有另一种解释。
热重载:
热重载功能快速编译我们文件中新添加的代码并将代码发送到 Dart 虚拟机。完成更新 Code Dart 虚拟机后,使用小部件更新应用程序 UI。热重载比热重启花费更少的时间。热重载也有一个缺点,如果您在应用程序中使用状态,那么热重载会保留状态,因此它们不会在热重载时将我们的设置更新为默认值。
热重启:
热重启与热重载有很大不同。在热重启中,它会破坏保留状态值并将它们设置为默认值。因此,如果您在应用程序中使用状态值,那么在每次热重启后,开发人员都会获得完全编译的应用程序,并且所有状态都将设置为默认值。应用程序小部件树完全用新的类型代码重建。热重启比热重载花费更多的时间。
我的解释来自:https://flutter-examples.com/difference-between-hot-reload-and-hot-restart-in-flutter-dart/
如果热重载或热重启不起作用
只是 运行 命令 flutter 运行 并且这将与命令行
一起工作
现在有官方视频:Hot reload?! | Decoding Flutter
热重载 (<1s),也称为 'stateful hot reload' 应尽可能经常使用。您需要记住在这 3 种情况下,您应该进行热重启(~10s)并丢失应用程序的状态(当前变量):
- 全局变量初始值设定项,在 class
之外
- 静态字段初始值设定项
- app的main()方法
一个例子:
int globalVariableNeedsHotRestart = 5; // <-- A global variable.
class WhosebugWidget {
static const staticFieldInitialized = Text("Hello"); // <-- Using the static keyword
}
main(List<String> args) {
print(
"This won't run until a hot restart. A hot reload won't do it."); // <-- Any code in main method
}
有人可以向我解释一下热重载和重启以及什么时候我不需要这样做(比如需要执行重建的代码更改)以及什么时候我肯定可以。在 Flutter web 和移动设备中调试时,如果我不确定我所做的更改是否影响了结果,我将关闭所有内容并重建项目...对 [=13= 这两种模式的一些见解] 会让我对在调试期间单击的按钮更有信心 ;)
IDE: Android Studio 3.5.1
这来自 Flutter for Android Studio 和 IntelliJ 的官方文档。
热重载与热重启
热重载通过将更新的源代码文件注入 运行 Dart VM(虚拟机)来工作。这不仅包括添加新的 类,还包括向现有 类 添加方法和字段,以及更改现有函数。一些类型的代码更改不能热重新加载:
全局变量初始值设定项
静态字段初始值设定项
app的main()方法
对于这些更改,您可以完全重新启动您的应用程序,而不必结束调试会话。
发件人:https://flutter.dev/docs/development/tools/android-studio#hot-reload-vs-hot-restart
还有另一种解释。
热重载:
热重载功能快速编译我们文件中新添加的代码并将代码发送到 Dart 虚拟机。完成更新 Code Dart 虚拟机后,使用小部件更新应用程序 UI。热重载比热重启花费更少的时间。热重载也有一个缺点,如果您在应用程序中使用状态,那么热重载会保留状态,因此它们不会在热重载时将我们的设置更新为默认值。
热重启:
热重启与热重载有很大不同。在热重启中,它会破坏保留状态值并将它们设置为默认值。因此,如果您在应用程序中使用状态值,那么在每次热重启后,开发人员都会获得完全编译的应用程序,并且所有状态都将设置为默认值。应用程序小部件树完全用新的类型代码重建。热重启比热重载花费更多的时间。
我的解释来自:https://flutter-examples.com/difference-between-hot-reload-and-hot-restart-in-flutter-dart/
如果热重载或热重启不起作用 只是 运行 命令 flutter 运行 并且这将与命令行
一起工作现在有官方视频:Hot reload?! | Decoding Flutter
热重载 (<1s),也称为 'stateful hot reload' 应尽可能经常使用。您需要记住在这 3 种情况下,您应该进行热重启(~10s)并丢失应用程序的状态(当前变量):
- 全局变量初始值设定项,在 class 之外
- 静态字段初始值设定项
- app的main()方法
一个例子:
int globalVariableNeedsHotRestart = 5; // <-- A global variable.
class WhosebugWidget {
static const staticFieldInitialized = Text("Hello"); // <-- Using the static keyword
}
main(List<String> args) {
print(
"This won't run until a hot restart. A hot reload won't do it."); // <-- Any code in main method
}