首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在使用ValueListenableBuilder时清除/关闭PopupMenuButton

如何在使用ValueListenableBuilder时清除/关闭PopupMenuButton
EN

Stack Overflow用户
提问于 2021-09-27 12:45:14
回答 1查看 35关注 0票数 0

我需要在PopupMenuButton中使用RadioListTile,但PopupMenuButton的默认实现不允许这样做,因为PopupMenuButton有它的onSelected方法,Radio类有它的onChanged方法,所以它们管理自己的状态。如果我使用Radio类的onChanged方法,那么它不会在我使用它的<代码>D10方法时忽略/关闭<代码>D9的默认行为,并且它不会更新单选按钮,因此我使用的是所描述的C11的变通方法,但进行了一些修改。我正在使用ValueListenableBuilder而不是AnimatedBuilder,但问题是,当我现在选择一个不是来自onSelected的项目时,我希望它的默认行为是自动解除/关闭。

这是最小的样本

代码语言:javascript
复制
import 'package:flutter/material.dart';

void main() => runApp(
      MaterialApp(
        debugShowCheckedModeBanner: false,
        home: Scaffold(
          appBar: AppBar(
            actions: [
              SelectionPopupMenu(),
            ],
          ),
        ),
      ),
    );

class SelectionPopupMenu extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final _selectionList = [
      'First',
      'Second',
    ];

    final _selectedValueNotifier = ValueNotifier(0);

    return PopupMenuButton<int>(
      onSelected: ,
      itemBuilder: (context) => List.generate(
        _selectionList.length,
        (index) => PopupMenuItem(
          child: ValueListenableBuilder(
            valueListenable: _selectedValueNotifier,
            builder: (context, value, child) => RadioListTile<int>(
              value: index,
              title: Text(_selectionList[index]),
              groupValue: _selectedValueNotifier.value,
              onChanged: (value) {
                _selectedValueNotifier.value = value!;
              },
            ),
          ),
        ),
      ),
    );
  }
}
EN

回答 1

Stack Overflow用户

发布于 2021-10-15 21:56:34

解决方案只需使用Navigator.pop(context);的任何对话框,弹出菜单,或屏幕返回或从屏幕上删除我使用它如下

代码语言:javascript
复制
 onChanged: (value) {
                  selectedValueNotifier.value = value!;
                  Navigator.pop(context);
                },
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69346862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档