You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何设置单个单选按钮默认选中?

Flutter单选按钮默认选中设置方案

你的代码里单选按钮没默认选中,核心问题有两个:

  • value和groupValue的字符串不匹配("English"和"english"大小写不一致)
  • groupValue用了固定字符串,没法动态维护选中状态

按下面的步骤修改就能实现默认选中:

  1. 在State类里定义一个状态变量,用来存储当前选中的选项:
String _selectedLanguage = "English"; // 初始化默认选中"English"
  1. 把RadioListTile的groupValue绑定到这个变量,同时在onChanged里更新状态:

修改后的完整代码示例:

Center(
  child: Row(
    children: [
      Padding(
        padding: const EdgeInsets.only(left: 30, top: 10),
        child: SizedBox(
          width: 150,
          height: 45,
          child: RadioListTile(
            title: Padding(
              padding: const EdgeInsets.only(left: 0),
              child: Row(
                mainAxisAlignment: MainAxisAlignment.start,
                children: [
                  Text(
                    "  English",
                    style: TextStyle(
                      color: Color(0xff000000),
                      fontWeight: FontWeight.bold,
                    ),
                  ),
                ],
              ),
            ),
            value: "English", // 和初始化的变量值完全匹配
            groupValue: _selectedLanguage, // 绑定状态变量
            shape: RoundedRectangleBorder(
                borderRadius: BorderRadius.circular(5)),
            onChanged: (value) {
              setState(() {
                _selectedLanguage = value!; // 更新选中状态
              });
            },
            tileColor: Color(0xff28e8df),
          ),
        ),
      ),
      // 可选:添加其他单选选项示例
      Padding(
        padding: const EdgeInsets.only(left: 30, top: 10),
        child: SizedBox(
          width: 150,
          height: 45,
          child: RadioListTile(
            title: Text(
              "  中文",
              style: TextStyle(
                color: Color(0xff000000),
                fontWeight: FontWeight.bold,
              ),
            ),
            value: "中文",
            groupValue: _selectedLanguage,
            shape: RoundedRectangleBorder(
                borderRadius: BorderRadius.circular(5)),
            onChanged: (value) {
              setState(() {
                _selectedLanguage = value!;
              });
            },
            tileColor: Color(0xff28e8df),
          ),
        ),
      ),
    ],
  ),
)

关键说明:

  • 确保value和初始化的_selectedLanguage完全一致(包括大小写、字符串内容)
  • 必须通过setState更新状态变量,触发组件重新渲染以更新选中状态

内容的提问来源于stack exchange,提问作者Priya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 11:40:28