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

问题描述 投票:0回答:3

热重载不适用于简单的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,作为热重载应该工作。

flutter flutter-layout
3个回答
2
投票

具体来说,热重新加载会导致重建所有现有小部件。只有重建小部件的代码才会自动重新执行。

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),
    );
  }
}

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),
    )));
  }
}

0
投票

但是,有些类型的代码更改无法进行热重新加载:

  • 全局变量初始化器
  • 静态字段初始化程序
  • 应用程序的main()方法

对于这些更改,您可以完全重新启动应用程序,而无需结束>调试会话:

  • 不要单击“停止”按钮;只需重新单击“运行”按钮(如果在运行会话中)或“调试”按钮(如果在调试会话中),或者按住Shift键单击“热重新加载”按钮。

Flutter developer portal上找到了这个。

© www.soinside.com 2019 - 2024. All rights reserved.