使用热重载时简单的字符串标题不更新
Posted
技术标签:
【中文标题】使用热重载时简单的字符串标题不更新【英文标题】:Simple string title is not updating when using hot reload 【发布时间】:2019-09-11 04:37:19 【问题描述】:热重载 在简单的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 与热重载一样工作。
【问题讨论】:
【参考方案1】:一些类型的代码更改无法热重载:
全局变量初始化器 静态字段初始化器 应用程序的main()
方法对于这些更改,您可以完全重新启动您的应用程序,而无需结束您的 > 调试会话:
不要点击停止按钮;只需重新单击“运行”按钮(如果在运行会话中)或“调试”按钮(如果在调试会话中),或者按住 shift 单击“热重载”按钮。
在Flutter developer portal 上找到这个。
【讨论】:
【参考方案2】:如果你像这样创建你的类,我认为没有问题:
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),
)));
【讨论】:
【参考方案3】:具体来说,热重载会导致所有现有小部件重新构建。只有参与小部件重建的代码会自动重新执行。
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),
);
【讨论】:
以上是关于使用热重载时简单的字符串标题不更新的主要内容,如果未能解决你的问题,请参考以下文章
调试 Blazor WASM(Aspnet 托管)时无法使用热重载
VuePress 不会热重载,但在 config.js 更改时会这样做
Flutter get_it 和 FutureBuilder 无法使用热重载