Flutter 当我第一次运行颤振代码时,它被重新编译了2次,这正常吗?(我只使用一个类)
我是个新手。有些事让我担心,我不知道这是否正常。我知道如果小部件的类型为Flutter 当我第一次运行颤振代码时,它被重新编译了2次,这正常吗?(我只使用一个类),flutter,Flutter,我是个新手。有些事让我担心,我不知道这是否正常。我知道如果小部件的类型为StateFulWidget,则代码将呈现。但在本例中,我有一个无状态小部件,出于某种原因,它呈现了2次。这正常吗 这是我的代码: import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { // This widget is t
StateFulWidget
,则代码将呈现。但在本例中,我有一个无状态小部件
,出于某种原因,它呈现了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) {
print("main");
return MaterialApp(title: 'Provider Example', initialRoute: '/', routes: {
'/': (context) => Page2(),
});
}
}
class Page2 extends StatelessWidget {
Page2() {
print("page2");
}
@override
Widget build(BuildContext context) {
return Container();
}
}
这是输出:
Restarted application in 832ms.
I/flutter ( 4439): main
I/flutter ( 4439): page2 --> next two lines are the same, the widget is render again
I/flutter ( 4439): main
I/flutter ( 4439): page2
颤振构建方法是在屏幕上创建并返回呈现的小部件的方法,因此每次UI中发生变化时都必须调用该构建,并且它需要重建。根据 生成方法将在以下时间后调用:
- 在调用initState之后
- 在调用didUpdateWidget之后
- 在接到对setState的调用后
- 此状态对象的依赖项更改后(例如,先前构建更改引用的继承小部件)
- 调用deactivate后,然后在另一个位置将状态对象重新插入到树中
构建
,让此方法尽可能简单,只需要构建小部件所需的实际内容
此外,在动画期间,过渡。。。为了执行动画,您的小部件将被重建很多次。如果你想避免不必要的构建,有一些方法可以做到,通过使用
const
小部件,如果你认为某个小部件在运行时不会像Text('Hi')
那样改变,这种小部件只需要构建一次,因此,您可以使用const
关键字对其执行操作。我不知道如何放置const
,以便小部件不会呈现。非常感谢您的回答,换句话说,这种行为是完全正常的是的,当然,如果您看到您的构建被调用了100次,这意味着可能有问题,无论如何const
和final
关键字在dart中有不同的含义,看看这个,这样你就会更好地理解:)你能给我一个在构建中使用const的例子吗?我得到了语法错误。const关键字必须与依赖于编译时已知值的小部件一起使用,这意味着如果您有一个文本,其中显示了一个在运行时可能更改的变量的值,您将得到错误,因为该小部件不能是const。您可以检查此项以更好地理解常量的含义,我理解,但在这种情况下,我遇到了一些错误,例如,我放置了const SafeArea(..