【问题标题】:Flutter Checkbox with the radio button logic带有单选按钮逻辑的 Flutter Checkbox
【发布时间】:2021-07-26 11:29:56
【问题描述】:

我一直在尝试使用 Flutter 中的复选框来获得单选按钮功能,但我无法针对此问题提出解决方案。我遇到的大多数示例都具有选择多个复选框的能力。

【问题讨论】:

  • 您特别想做什么?它是一组复选框,您希望用户一次只能有效地选中一个吗?
  • 是的,这正是我想要的
  • 那么,您是否已经熟悉在 Flutter 中设置“状态”并做出响应?如果是这样,那么您需要在复选框值更改时设置状态,并且在“setState()”中,您需要设置一个变量来标识哪个复选框被选中。小部件将重建,因此当您渲染每个复选框时,您会根据设置的变量检查每个复选框(通过 id/property),然后只勾选之前选中的复选框。这有意义吗?
  • 是的,但是你能给我举个例子吗?
  • 说实话,我真的没有时间来构建我所描述的工作演示。正如我所说,如果您在每个复选框的“onChanged”中设置状态,那么您只需要一个变量来跟踪哪个复选框被勾选,然后设置每个检查的值(真/假) -box 在小部件构建时相应地。您应该自己尝试一下,然后如果您仍然遇到问题,您可以发布您正在处理的特定代码,这将有助于诊断您可能出错的任何特定位置

标签: flutter dart checkbox radio-button flutter-widget


【解决方案1】:

请检查下面的代码。

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

int index = 0;

class demo extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => _demoState();
}

class _demoState extends State<demo> {
  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Material(
      child: SafeArea(
        child: ListView.builder(
          itemCount: 6,
          itemBuilder: (context, i) {
            return GestureDetector(
              onTap: () {
                setState(() {
                  index = i;
                });
              },
              child: ListTile(
                leading: index == i
                    ? Icon(Icons.check_box)
                    : Icon(Icons.check_box_outline_blank),
                title: Text(i.toString()),
              ),
            );
          },
        ),
      ),
    );
  }
}

【讨论】:

  • @PriyanAbeyasekare,欢迎,请为我投票,
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-31
  • 1970-01-01
相关资源
最近更新 更多