我简直无法做到这一点。因此,这是主要的小部件:
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;
[...]
立即开始工作。
那么,我在哪里错了?
答案 0 :(得分:0)
是的,谢谢大家,仅进行重建/热重启确实是答案。事实是,调试器显示的变量恰好具有正确的值,而Widget确实依赖于热重装之前的旧类定义,这使我感到困惑。
tl; dr:重新启动或热重启。