【问题标题】:Flutter radio button won't rebuild颤振单选按钮不会重建
【发布时间】:2021-01-21 07:38:58
【问题描述】:

我的这段代码有问题,收音机内的变量发生了变化,但收音机可能不会重建,因为当我点击它时点不会移动。但在那之后,如果我再次点击语言选择,最后选择的语言会有一个点。这可能是一些状态问题,但我不知道如何解决它。尝试了另一种方法,如在西班牙语行中,也不起作用。

 import 'package:flutter/material.dart';
 import 'package:rflutter_alert/rflutter_alert.dart';
 import 'package:settings_ui/settings_ui.dart';


class SettingsPR extends StatefulWidget {
  @override
  _SettingsPRState createState() => _SettingsPRState();
}

class _SettingsPRState extends State<SettingsPR> {
  int _radioValue = 1;

  int _radioHandler(int value) {
    setState(() {
      _radioValue = value;
      switch (_radioValue) {
        case 0:
          return _radioValue;
          break;
        case 1:
          return _radioValue;
          break;
        case 2:
          return _radioValue;
          break;
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    return Container(
        child: SettingsList(
      sections: [
        SettingsSection(title: 'Common', tiles: [
          SettingsTile(
            title: 'Language',
            subtitle: 'English',
            leading: Icon(Icons.language),
            onTap: () {
              Alert(
                  context: context,
                  title: 'Edit',
                  content: Column(children: <Widget>[
                    Row(
                      children: [
                        Container(
                          child: new Radio(
                            value: 0,
                            groupValue: _radioValue,
                            onChanged: _radioHandler,
                          ),
                        ),
                        Text(
                          'English',
                        ),
                      ],
                    ),
                    Row(
                      children: [
                        Container(
                          child: new Radio(
                            value: 1,
                            groupValue: _radioValue,
                            onChanged: (value) =>
                                setState(() => _radioValue = value),
                          ),
                        ),
                        Text(
                          'Spanish',
                        ),
                      ],
                    ),
                    Row(
                      children: [
                        Container(
                          child: new Radio(
                            value: 2,
                            groupValue: _radioValue,
                            onChanged: _radioHandler,
                          ),
                        ),
                        Text(
                          'Polish',
                        ),
                      ],
                    ),
                  ]),
                  buttons: [
                    DialogButton(
                        onPressed: () =>
                            Navigator.of(context, rootNavigator: true)
                                .pop(true),
                        child: Text(
                          "OK",
                          style: TextStyle(),
                        ))
                  ]).show();
            },
          ),
        ]),
      ],
    ));
  }
}

【问题讨论】:

    标签: flutter radio-button


    【解决方案1】:

    我找到了解决方案,也许它会对某人有所帮助。我不得不切换到 AlertDialog 并且不使用 flutter_dialog 库。解决方案是在 AlertDialog 中放置一个 StatefulBuilder 来创建 BuildContext,一切正常。

    【讨论】:

      猜你喜欢
      • 2021-08-11
      • 2020-06-21
      • 1970-01-01
      • 2020-03-04
      • 2020-11-05
      • 2020-10-05
      • 2021-10-15
      • 2020-05-26
      • 1970-01-01
      相关资源
      最近更新 更多