【问题标题】:How to show increment of counter in my ui in flutter? [duplicate]如何在我的用户界面中显示计数器的增量? [复制]
【发布时间】:2020-05-11 11:15:18
【问题描述】:

我已经声明了一个名为 ticketCounter 的变量,它存储在 SharedPrefs 中。这个变量会根据需要递增和递减。但是我想在我的 appBar 上显示这个计数器并希望它的值更新。尽管该值被存储在变量中,但它没有显示出来。

  int tickets;
  void fetchTickets() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    tickets = prefs.getInt('ticketRW') ?? 0;
  }
void initState() {
    portraitModeOnly();
    fetchTickets();
    super.initState();
  }

  Widget build(BuildContext context) {
      return Material(
          child: Scaffold(
                   appBar: AppBar(
              actions: <Widget>[
                Padding(
                  padding: const EdgeInsets.only(top: 14, right: 14),
                  child: Text(
                   tickets.toString(),//isn't getting updated
                    style: TextStyle(
                      fontSize: 22,
                      fontFamily: "Netflix",
                      color: Colors.white,
                      fontWeight: FontWeight.w500,
                    ),
                  ),
                ),
               ),
             ),
            }

【问题讨论】:

标签: user-interface flutter dart


【解决方案1】:

您应该使用setState() 来更新您的状态。

改变这个方法:

void fetchTickets() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    tickets = prefs.getInt('ticketRW') ?? 0;
}

用这个:

void fetchTickets() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    setState(() {
        tickets = prefs.getInt('ticketRW') ?? 0;
    });
} 

在 Flutter 中,有 StatefulWidgetStatelessWidget

无状态小部件有一个初始状态,它永远不会改变。

有状态的小部件有与之配对的状态对象。小部件是这些状态对象的 UI 表示。如果状态对象中有counter 变量,则有状态小部件将绘制counter 的值。但是,更改 counter 变量不会更新 UI。你应该告诉小部件“嘿,我改变了你的状态对象,你最好检查一下并更新自己。”使用 setState()。

这是对 Flutter 中状态管理的介绍。我建议您进一步阅读here

【讨论】:

  • 我应该在哪里声明 setState 方法?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-29
  • 1970-01-01
  • 1970-01-01
  • 2019-05-04
相关资源
最近更新 更多