颤动-清除小部件缓存

时间:2019-03-22 14:11:28

标签: flutter

在处理颤动后离开页面然后重新输入时,旧值将被保存。

我不希望发生这种情况。

例如,当我第一次输入:

int number = 1;

class TestPage extends StatefulWidget {
  @override
  _TestPageState createState() => _TestPageState();
}

bool donus = true;

class _TestPageState extends State<TestPage> {
  List<Todo> sorular = new List<Todo>();

  @override
  void initState() {
    print(donus);
    super.initState();
    getTodos();
  }

  bool pressAttention = true;
  String ileri = "İleri", geri = "Geri";
  @override
  Widget build(BuildContext context) {number++;
   print(number);

输出:1

页面的第二项: 输出:2

我不知道该如何解决。

1 个答案:

答案 0 :(得分:0)

number变量的范围超出页面及其状态的范围。

number本质上是静态的或全局的,并且其生存期与您的应用程序有关。加强其范围,以便在状态类中声明它,并在initState方法中对其进行初始化(对于私有非最终变量)。

class TestPage extends StatefulWidget {
  @override
  _TestPageState createState() => _TestPageState();
}

bool donus = true;

class _TestPageState extends State<TestPage> {
  List<Todo> sorular = new List<Todo>();
  int _number;

  @override
  void initState() {
    _number = 1;
    print(donus);
    super.initState();
    getTodos();
  }

  bool pressAttention = true;
  String ileri = "İleri", geri = "Geri";
  @override
  Widget build(BuildContext context) {
  _number++; // You probably don't want to increment every time you build,
             // but I have no idea what you're using `number` for.
  print(_number);

您的donus变量也是全局变量,这不太可能是您想要的。 Dart是一种面向对象的语言。有关类,范围等的更多详细信息,请参见language tour