VSCode 中的 Flutter beta 热重载适用于 Web,但不适用于 iOS 和 Android(适用于 Android Studio)

Posted

技术标签:

【中文标题】VSCode 中的 Flutter beta 热重载适用于 Web,但不适用于 iOS 和 Android(适用于 Android Studio)【英文标题】:Flutter beta hot reload in VSCode works for web but not iOS and Android (which works in Android studio) 【发布时间】:2020-11-01 09:55:10 【问题描述】:

我正在运行 Mac Catalina 并安装了 android Studio 和 VSCode

❯ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel beta, 1.19.0-4.3.pre, on Mac OS X 10.15.5 19F101, locale en-GB)
 
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.1)
[✓] Xcode - develop for ios and macOS (Xcode 11.5)
[✓] Chrome - develop for the web
[✓] Android Studio (version 4.0)
[✓] VS Code (version 1.47.0)
[✓] Connected device (3 available)

• No issues found!

我有一个非常简单的应用程序

import 'package:flutter/material.dart';

void main() 
  runApp(
    MaterialApp(
      home: Center(
        child: Text("Hello World!"),
      ),
    ),
  );

如果我从 Android Studio 运行应用程序,那么热重载就可以正常工作,例如更改文本并保存将更新任何设备(iOS、Android 或 Chrome)上的文本。

但是如果我在 VSCode 中做同样的事情,即 F5 (Debug: Start debugging),那么热重载仅适用于 web。每次进行更改并保存时,在调试控制台中都会看到以下内容。

Reloaded 1 of 502 libraries in 167ms.

但屏幕上没有更新(除了运行 Chrome 时,调试控制台中的输出看起来与其他输出相同。)。我觉得这很奇怪!

更新

我在dart-code 开了一个bug report。

【问题讨论】:

【参考方案1】:

哦,天哪。我忘记将应用程序放入无状态应用程序中。我的错!

import 'package:flutter/material.dart';

void main() 
  runApp(
    MyApp(),
  );


class MyApp extends StatelessWidget 
  @override
  Widget build(BuildContext context) 
    return MaterialApp(
      home: Center(
        child: Text("Hello World!"),
      ),
    );
  

【讨论】:

以上是关于VSCode 中的 Flutter beta 热重载适用于 Web,但不适用于 iOS 和 Android(适用于 Android Studio)的主要内容,如果未能解决你的问题,请参考以下文章

VSCode 中的 Flutter 将包解释为 URI

VSCode 中的 Flutter 初始化

Flutter 热重载不适用于 VSCode 中的自动保存

flutter在vscode中的快捷键

自动完成/智能感知不适用于 VSCode 中的 dart/flutter

VSCode、Flutter SDK 版本错误?