Flutter / Dart:尽管已设置,但未设置状态变量

时间:2019-03-03 17:30:40

标签: dart flutter

我简直无法做到这一点。因此,这是主要的小部件:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Anliegen Foo',
      home: Home(),
    );
  }
}

而Home小部件应该是有状态的,因此定义如下:

class Home extends StatefulWidget {
  @override
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
  int _currentIndex = 42;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Foo - $_currentIndex"),
      ),
      body: Text('bar baz'),
    );
  }
}

类似于official docs推荐您这样做的方式。

您希望AppBar标题为“ Foo-42”。但是它是“ Foo-0”,即,在找到变量的同时,它被发现为空(因此似乎自动解释为0)。 调试器说,在类和构建函数的上下文中,该变量均已存在并设置为42。 这也适用于我尝试声明的所有其他内容-列表,字符串等任何未初始化但同时已初始化的东西。

但是当我随后在build方法中设置变量时,像这样:

@override
  Widget build(BuildContext context) {
    _currentIndex = 42;
[...]

立即开始工作。

那么,我在哪里错了?

1 个答案:

答案 0 :(得分:0)

是的,谢谢大家,仅进行重建/热重启确实是答案。事实是,调试器显示的变量恰好具有正确的值,而Widget确实依赖于热重装之前的旧类定义,这使我感到困惑。

tl; dr:重新启动或热重启。