热重载不适用于简单的Hello World
示例。当试图将text
,string
更改为运行时的其他内容并热重新加载它时,没有任何反应。我在物理设备上调试,我正在使用VSCode。
import 'package:flutter/material.dart';
void main() {
String text = "Hello world";
runApp(Center(child: new Text(text, textDirection: TextDirection.ltr)));
}
热重装不可靠还是我在这里做错了什么?
编辑:发现重新启动应用程序,CTRL + SHIFT + F5,作为热重载应该工作。
具体来说,热重新加载会导致重建所有现有小部件。只有重建小部件的代码才会自动重新执行。
https://flutter.dev/docs/development/tools/hot-reload
这意味着您需要一个实现build
方法的窗口小部件类,以确保在热重新加载时重新执行代码。
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
String text = "Hello world";
return Center(
child: new Text(text, textDirection: TextDirection.ltr),
);
}
}
如果你像这样创建你的类我认为没有问题:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
String text="Hello World"
return MaterialApp(
home: Scaffold(
body: Center(
child: Text(text,textDirection: TextDirection.ltr),
)));
}
}
但是,有些类型的代码更改无法进行热重新加载:
- 全局变量初始化器
- 静态字段初始化程序
- 应用程序的
main()
方法对于这些更改,您可以完全重新启动应用程序,而无需结束>调试会话:
- 不要单击“停止”按钮;只需重新单击“运行”按钮(如果在运行会话中)或“调试”按钮(如果在调试会话中),或者按住Shift键单击“热重新加载”按钮。
在Flutter developer portal上找到了这个。