Jhinnnn 2022-11-21 11:12 采纳率: 0%
浏览 15
已结题

Flutter无法更新showModalBottomSheet其中的内容

我想实现单击ListView中的TextButton时进行背景颜色切换为选中状态并修改值。
当前现象为值修改完成但状态未更新,重新打开底部消息框时状态更新。
本人按照网上一些说法为showModalBottomSheet为无状态组件进行操作但未生效。求帮助!

showModalBottomSheet

showModalBottomSheet{
 context: context,
builder: (BuildContext context) {
return StatefulBuilder(builder: (context, setState) {
return Container(
...//省略样式代码
child: Center(
child: Column(
children: [
...//省略无关代码
Container(
...//省略样式代码
child: child: ListView(
                        scrollDirection: Axis.horizontal,
                        children: CreateVipBuy(),
)
...//省略无关代码

CreateVipBuy()

List<Widget> CreateVipBuy() {
    List<Widget> TButton = [];
    List<Widget> Divs = [];
  //生成5列2行的  TextButton
    for (int i = 0; i < 5; i++) {
      for (int j = 0; j < 2; j++) {
        if (i == Vip.VIPbuy[0] && j == Vip.VIPbuy[1]) {
          Vip.BuyBottonBackground = Vip.BuyTButton_TrueColors;
          Vip.BorderColor = Vip.BuyTButtonBorder_TrueColors;
        } else {
          Vip.BuyBottonBackground = Vip.BuyTButton_FalseColors;
        }
        Divs.add(Container(
          ...//省略样式代码
         child: Stack(
            alignment: Alignment.bottomCenter,
            children: [
              Container(
                ...//省略样式代码
                child: TextButton(
                  onPressed: () {
                    print("点击了:第${j + 1}排第${i + 1}列");
                    TestViewState(i, j);
                  },
                  child: Column(
                    children: const [
                     ...//省略无关代码
                  ),
                ),
              ),
             ...//省略无关代码
            ],
          ),
        ));
      }
      TButton.add(Column(
        children: [
          Divs[0],
          SizedBox(
            height: 8.sp,
          ),
          Divs[1],
        ],
      ));
      if (i < 4) {
        TButton.add(SizedBox(
          width: 20.sp,
        ));
      }
      Divs.clear();
    }
    return TButton;
  }

TestViewState(x,y)

 void TestViewState(x, y) {
    setState(() {
      Vip.VIPbuy = [x, y];//修改全局变量
    });
  }
  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-11-21 14:52
    关注
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月3日
  • 创建了问题 11月21日

悬赏问题

  • ¥30 模拟电路 logisim
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价