dart - Flutter / Dart:尽管设置了状态变量但未设置
问题描述
我根本无法从中做出正面或反面。所以,这是主要的小部件:
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'),
);
}
}
与官方文档建议您执行此操作的方式类似。
您会期望 AppBar 的标题是“Foo - 42”。但它是“Foo - 0”,即发现变量时发现它为空(因此似乎自动解释为 0)。调试器表示该变量存在并设置为 42,无论是在类的上下文中还是在构建函数中。这也适用于我尝试声明的任何其他内容 - 列表、字符串等,所有这些都未初始化但同时已初始化。
但是当我在构建方法中设置变量时,如下所示:
@override
Widget build(BuildContext context) {
_currentIndex = 42;
[...]
现在它开始工作了。
那么,我在哪里错了?
解决方案
是的,谢谢你们,仅仅重建/热重启确实是答案。调试器以正确的值很好地显示了变量,而 Widget 确实依赖于热重载之前的旧类定义,这让我感到震惊。
tl; dr:重启或热重启。
推荐阅读
- scala - SparkSession 不存在
- testing - 每个环境是否可以在 TestCafe 1.x 中有多个 .testcaferc.json 文件?
- c# - 将整数列表添加到整数列表列表中
- ruby-on-rails - Rails:未登录用户对页面的访问受限
- linux - 在 AWK 中不知道确切位置的情况下替换缺失值
- tsql - 除法时精度值不匹配
- php - PHP + Elasticsearch - 从 Elastic2 到 Elastic6
- karate - 我们能否实现基于 karate.env 的“过滤示例”
- mongodb - mongo如何按组字段对文档进行分组
- php - 不要在双方括号之间的任何地方选择文本