为什么颤动中的热重载会影响构建方法内部增加的静态变量?
Why hot reload in flutter is influencing static variable incremented inside build method?
我正在尝试以下代码,在热重载时它正在递增静态变量 checkIfIncremented 变量。请有人解释一下为什么会这样??
import 'package:flutter/material.dart';
void main()=>runApp(MaterialApp(
home: TrialApp(),
));
class TrialApp extends StatefulWidget {
@override
_TrialAppState createState() => _TrialAppState();
}
class _TrialAppState extends State<TrialApp> {
static int checkIfIncremented = 0;
@override
Widget build(BuildContext context) {
checkIfIncremented++;
return Scaffold(
body: Center(
child: Text("This variable is getting incremented after each hot reload : $checkIfIncremented"),
),
);
}
}
这个问题是因为每次热重载程序时,构建方法都会自动运行。所以你应该避免在这个函数中使用 checkIfIncremented++;
。
我不确定你为什么使用这段代码以及你的目的是什么,但是如果你只想在第一次加载时增加checkIfIncremented
,你可以使用这段代码:
bool firstLoad = true;
@override
void didChangeDependencies() {
super.didChangeDependencies();
if(firstLoad){
checkIfIncremented++;
firstLoad = false;
setState((){});
}
}
我正在尝试以下代码,在热重载时它正在递增静态变量 checkIfIncremented 变量。请有人解释一下为什么会这样??
import 'package:flutter/material.dart';
void main()=>runApp(MaterialApp(
home: TrialApp(),
));
class TrialApp extends StatefulWidget {
@override
_TrialAppState createState() => _TrialAppState();
}
class _TrialAppState extends State<TrialApp> {
static int checkIfIncremented = 0;
@override
Widget build(BuildContext context) {
checkIfIncremented++;
return Scaffold(
body: Center(
child: Text("This variable is getting incremented after each hot reload : $checkIfIncremented"),
),
);
}
}
这个问题是因为每次热重载程序时,构建方法都会自动运行。所以你应该避免在这个函数中使用 checkIfIncremented++;
。
我不确定你为什么使用这段代码以及你的目的是什么,但是如果你只想在第一次加载时增加checkIfIncremented
,你可以使用这段代码:
bool firstLoad = true;
@override
void didChangeDependencies() {
super.didChangeDependencies();
if(firstLoad){
checkIfIncremented++;
firstLoad = false;
setState((){});
}
}