为什么颤动中的热重载会影响构建方法内部增加的静态变量?

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((){});
  }
}