【问题标题】:What is the difference between hot reload, hot restart, and full restart?热重载、热重启和完全重启有什么区别?
【发布时间】:2020-08-30 10:07:45
【问题描述】:

Flutter 中的热重载、热重启和完全重启有什么区别,Web 也支持吗?

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    热重载:

    • 热重载将代码更改加载到 VM 中并重新构建小部件树,保留应用程序状态;它不会重新运行 main()initState()

      对于 IntelliJ 或 Android Studiocmd + \

      对于 VSCodectrl + F5

    热重启:

    • 热重启会将代码更改加载到 VM 中,并重启 Flutter 应用,从而丢失应用状态。

      对于 IntelliJ 或 Android Studioshift + cmd + \

      对于 VSCodeshift + ctrl + F5

    完全重启:

    • 完全重新启动会重新启动 iOS、Android 或 Web 应用程序。这需要更长的时间,因为它还会重新编译 Java / Kotlin / ObjC / Swift 代码。在 Web 上,它还会重新启动 Dart Development Compiler。对此没有特定的键盘快捷键;您需要停止并启动运行配置。

    Flutter web 目前支持热重启,但不支持热重载。

    【讨论】:

      【解决方案2】:

      在简单的热重载中,只需更新程序中的更改。但是热重启将再次删除您之前的状态并运行完整的程序。您可以查看下面的比较了解更多信息。

      热重载

      • Flutter 热重载功能可与命令提示符或终端上的小 r 键组合使用。
      • 热重载功能快速编译我们文件中新添加的代码并将代码发送到 Dart 虚拟机。完成 Code Dart 虚拟机更新后,使用小部件更新应用 UI。
      • 热重载比热重启花费的时间更少。
      • 热重载还有一个缺点,如果您在应用程序中使用状态,那么热重载会保留状态,因此它们不会在热重载时将我们的设置更新为默认值。

      热重启

      • 热重启与热重载有很大不同。
      • 在热重启中,它会破坏保留状态值并将其设置为默认值。因此,如果您在应用程序中使用状态值,那么在每次热重启后,开发人员都会获得完全编译的应用程序,并且所有状态都将设置为其默认值。
      • 应用小部件树已使用新的类型代码完全重建。
      • 热重启所需的时间比热重载要长得多。

      【讨论】:

        猜你喜欢
        • 2021-12-05
        • 2020-05-26
        • 1970-01-01
        • 2017-05-16
        • 2020-07-13
        • 1970-01-01
        • 2017-04-14
        • 2020-02-23
        • 2016-10-29
        相关资源
        最近更新 更多