使用热重载时简单的字符串标题不更新

Posted

技术标签:

【中文标题】使用热重载时简单的字符串标题不更新【英文标题】:Simple string title is not updating when using hot reload 【发布时间】:2019-09-11 04:37:19 【问题描述】:

热重载 在简单的Hello World 示例中不起作用。当尝试将textstring 更改为运行时下的其他内容并热重新加载它时,没有任何反应。我正在物理设备上进行调试,并且正在使用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 无法使用热重载

Android Studio 中的 Flutter App 不会通过热重载或热重启在虚拟设备上更新

Lua开发手记

颤振热重载和热重启不起作用