簡體   English   中英

Flutter/Dart:盡管設置了狀態變量,但未設置

[英]Flutter/Dart: State variables not set despite being set

我根本無法從中做出正面或反面。 所以,這是主要的小部件:

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。 這也適用於我嘗試聲明的任何其他內容 - 列表、字符串等等,都未初始化但同時已初始化。

但是當我在 build 方法中設置變量時,如下所示:

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

現在它開始工作了。

那么,我哪里出錯了?

是的,謝謝你們,僅僅重建/熱重啟確實是答案。 我被調試器顯示的變量以正確的值顯示得很好,而小部件確實依賴於熱重載之前的舊類定義這一事實讓我感到震驚。

tl;dr:重啟或熱重啟。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM