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

时间:2019-04-21 21:00:39

标签: flutter flutter-layout

在一个简单的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可以像热加载一样工作。

3 个答案:

答案 0 :(得分: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),
    );
  }
}

答案 1 :(得分:1)

如果您这样创建类,我认为没有问题:

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

答案 2 :(得分:0)

  

某些类型的代码更改 不能热加载 ,但是:

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

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

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

Flutter developer portal上找到了它。