【问题标题】:Flutter Radio Button not changing value when clicked/ Not changing active color eitherFlutter Radio Button在单击时不改变值/也不改变活动颜色
【发布时间】:2020-01-27 08:13:37
【问题描述】:

我已经尝试在 Flutter 中遵循 Radio 类的教程,但是当我单击它时,按钮并没有改变颜色。我知道设备正在读取点击次数,因为每当单击按钮但按钮颜色没有改变时,我都会放置一个打印语句来显示。

我就是不知道问题出在哪里

int radioValue = -1;

void _handleRadioValueChanged (int value){
  setState(() {
    radioValue = value;
    print(radioValue);
  });
}

return new Scaffold(
      body: new Center(
        child: new Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            new Radio<int>(
                activeColor: Colors.green,
                value: 0,
                groupValue: radioValue,
                onChanged: _handleRadioValueChanged),

        new Radio<int>(
            activeColor: Colors.green,
            value: 1,
            groupValue: radioValue,
            onChanged: _handleRadioValueChanged),

        new Radio <int>(
            activeColor: Colors.green,
            value: 2,
            groupValue: radioValue,
            onChanged: _handleRadioValueChanged),

    ),
  )
);

我希望按钮在按下时会发生变化,但它只是保持在值 =-1 的状态;

【问题讨论】:

  • 对我来说很好用

标签: flutter dart


【解决方案1】:

下面是代码:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  int radioValue = -1;

  void _handleRadioValueChanged(int value) {
    setState(() {
      radioValue = value;
      print(radioValue);
    });
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
        body: new Center(
      child: new Column(mainAxisAlignment: MainAxisAlignment.center, children: [
        new Radio(
            activeColor: Colors.green,
            value: 0,
            groupValue: radioValue,
            onChanged: _handleRadioValueChanged),
        new Radio<int>(
            activeColor: Colors.green,
            value: 1,
            groupValue: radioValue,
            onChanged: _handleRadioValueChanged),
        new Radio<int>(
            activeColor: Colors.green,
            value: 2,
            groupValue: radioValue,
            onChanged: _handleRadioValueChanged),
      ]),
    ));
  }
}

Desired Output

【讨论】:

  • 这不是与原始问题的代码基本相同吗?我很困惑。
  • 代码是一样的,只是他忘了在最后加一个“]”。所以他可能会得到错误。
  • 如果缺少括号,代码甚至无法编译。这可能只是一个复制粘贴错误。
  • 仍有问题,我不知道我做错了什么,但我可能会暂时避免使用单选按钮,直到我弄明白为止。
  • 我发现了问题所在。我没有把函数放在@override之上
猜你喜欢
  • 2015-08-06
  • 2019-11-22
  • 1970-01-01
  • 2015-05-08
  • 2017-03-08
  • 1970-01-01
  • 2015-09-25
  • 2020-12-27
  • 2020-06-28
相关资源
最近更新 更多