簡體   English   中英

將變量值從 state 傳遞到另一個小部件

[英]Passing variable value from state to another widget

我正在為一個簡單的案例而苦苦掙扎,如果有人可以在這里提供幫助,那就太好了。

假設我有一些stateful widget 在其 state 中,我定義了一個變量(可能是任何類型),該變量稍后通過setState()方法進行更改,在該方法中,我根據某些特定條件動態分配其值。 直到此時為止,一切都在一個 class 內進行。

如果我想從另一個 class (完全不同的page )訪問這個變量的值,如果它的值發生變化,重建它怎么辦? 您能否也給我一些例子?

提前致謝!

這正是 State MANAGEMENT 存在的原因。 通過您的應用程序管理您的 state。 有許多不同的選項可供參考: https://flutter.dev/docs/development/data-and-backend/state-mgmt/options

在這種情況下,您可以使用provider package。 yaml文件中添加, provider: ^4.3.2+4

class HomeApp extends StatefulWidget {
  @override
  _HomeAppState createState() => _HomeAppState();
}

class _HomeAppState extends State<HomeApp> {
  Counter _counterProvider;

  @override
  void initState() {
    super.initState();
    _counterProvider = Provider.of(context, listen: false);
  }

  void updateCounter() {
    _counterProvider.setCount();
  }

  @override
  Widget build(BuildContext context) {
    Counter _counterProvider = Provider.of(context);
    return Scaffold(
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Container(
              child: Text(
                _counterProvider.count.toString(),
                style: TextStyle(
                  fontSize: 22,
                ),
              ),
            ),
            RaisedButton(
              onPressed: updateCounter,
              child: Text('Click'),
            ),
          ],
        ),
      ),
    );
  }
}
// class for storing data(Counter.dart)
import 'package:flutter/material.dart';

class Counter extends ChangeNotifier { // create a common file for data
  int _count = 0;

  int get count => _count;

  void setCount() {
    _count++;
    notifyListeners();
  }
}

暫無
暫無

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

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