首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >未反映在flutter中添加到列表上的更改

未反映在flutter中添加到列表上的更改
EN

Stack Overflow用户
提问于 2021-08-16 12:12:29
回答 2查看 70关注 0票数 1
代码语言:javascript
运行
AI代码解释
复制
import '../../Data/expansionbutton.dart';
import 'package:flutter/material.dart';
import '../../Data/Globalvariable.dart' as global;
import 'menu.dart';

class Textbtn extends StatefulWidget {
  final Widget menu = Text('Add Pin');
  @override
  _TextbtnState createState() => _TextbtnState(menu: menu);
}

class _TextbtnState extends State<Textbtn> {
  Widget menu;
  bool expn = false;
  _TextbtnState({this.menu});
  String pin;
  void addfun() {
    setState(() {
      global.pincode.add(pin);
      menu = MenuBar();
      expn = false;
    });
  }

  @override
  Widget build(BuildContext context) {
    return ExpnButton(
      expanded: expn,
      wiget: SizedBox(
        height: MediaQuery.of(context).size.height - 400,
        width: MediaQuery.of(context).size.width - 10,
        child: Padding(
          child: menu,
          padding: EdgeInsets.all(19),
        ),
      ),
      upperwig: SizedBox(
        height: 80,
        child: TextField(
          onChanged: (value) {
            pin = value;
          },
          maxLength: 6,
          keyboardType: TextInputType.number,
          decoration: InputDecoration(
              icon: Icon(Icons.pin_drop),
              suffix: TextButton(
                style: TextButton.styleFrom(
                  primary: Colors.blue,
                ),
                onPressed: () {
                  addfun();
                },
                child: Text('Add'),
              ),
              border: OutlineInputBorder(
                borderRadius: BorderRadius.circular(20.0),
              ),
              hintText: " Enter pin code",
              labelText: "Pin Code"),
        ),
      ),
    );
  }
}

我试图从用户那里获取pin,并将选择的pin显示给用户,同时我创建了一个全局列表,但是当我通过setstate更改列表时,这些更改似乎根本不起作用

代码语言:javascript
运行
AI代码解释
复制
Globalvariable.dart
library project.globals;
List<String> pincode = ['Select Pin',];

以下是menubar()的文件

代码语言:javascript
运行
AI代码解释
复制
menu.dart

import 'package:flutter/material.dart';
import '../../Data/Globalvariable.dart' as global;
import 'package:flutter/foundation.dart';

class MenuBar extends StatefulWidget {
  @override
  MenuBarState createState() {
    return MenuBarState();
  }
}


class MenuBarState extends State<MenuBar> {
  @override
  Widget build(BuildContext context) {
    return ListView.builder(
      itemCount: global.pincode.length,
      itemBuilder: (context, index) {
        final item = global.pincode[index];
        return Dismissible(
          key: Key(item),
          onDismissed: (direction) {
            setState(() {
              global.pincode.removeAt(index);
            });
            ScaffoldMessenger.of(context)
                .showSnackBar(SnackBar(content: Text('$item Removed')));
          },
          background: Container(color: Colors.red),
          child: ListTile(
            title: Text(item),
          ),
        );
      },
    );
  }
}

我想要的只是从用户获取输入并在展开时显示它,但是我的代码能够接受输入并更改global.pincode,正如我在调试控制台中看到的那样,但是这些更改似乎不会更改按钮的状态,或者更确切地说,更改不会更改按钮的列表视图

EN

回答 2

Stack Overflow用户

发布于 2021-08-16 12:28:49

列表中的User Valuelistenablebuilder &在Valuelistenablebuilder中将数组/列表作为值传递。如果发生任何更改,它将更新列表。

票数 0
EN

Stack Overflow用户

发布于 2021-08-18 12:35:12

嗯,我想出了我使用的changenotifier的答案,创建了一个扩展changenotifier的类,并将所有更改的变量放在该类中,然后添加所有更改使用者和小部件中的数据的语句,我需要在provider中重新构建这些数据,它可以完美地工作

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68808706

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文