问题描述
我正在尝试以下代码,在热重载时它正在增加静态变量 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((){});
}
}