получить значения radioButton внутри метода onPresed - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь написать более простую версию приложения для покупок с использованием флаттера, но у меня возникла проблема при написании метода onPressed для кнопки, которая должна содержать значение переключаемой кнопки (у меня естьтри радиокнопки), чтобы в зависимости от его значения он переходил на другую страницу.Ниже приведен класс, описывающий первую страницу приложения

, класс MyAppState extends State

{int _selected = 0;

void onPressed()
{
     //what to write??
}

void onChanged(int value)
{
    setState(() {
        _selected = value;
    });
}

List<Widget> makeRadios()
{
    List<Widget> list = new List<Widget>();
    List names = new List(3);
    names[0]="Women";
    names[1]="Men";
    names[2]="Children";

    list.add(new Text(
        "Category:",
        style: TextStyle(
            decoration: TextDecoration.underline,
            fontSize: 25,
            color: Colors.deepPurple,
        ),
    ));
    for(int i=0;i<3;i++)
    {
        list.add(
            new RadioListTile(
                value: i,
                title: Text(names[i]),
                groupValue: _selected,
                onChanged: (int value){onChanged(value);},
                activeColor: Colors.deepPurple,
                secondary: new Icon(Icons.shopping_basket),
            ));
    }
    list.add(new RaisedButton(
        child: new Text(
            "done!",
            style: TextStyle(
                fontSize :17.0,
                color: Colors.white,
            ),
        ),
        color:Colors.purpleAccent,
        onPressed: onPressed,
        shape: new RoundedRectangleBorder(
            borderRadius: new BorderRadius.circular(30.0)),

    )
    );

    return list;
}

@override
Widget build(BuildContext context) {
    return new Scaffold(
        appBar: new AppBar(
            backgroundColor: Colors.purple,
            title: new Text("Home page"),
        ),
        body:
        Center(
            child:
            new Container(
                width: 500.0,
                height:300,
                color: Colors.white70,
                alignment: Alignment.center,
                child: new Column(
                    children:
                    makeRadios(),
                ),
            ),
        ),
    );

}

1 Ответ

0 голосов
/ 11 июля 2019

У вас уже есть переменная _selected, которая содержит текущее значение выбранного переключателя.

void onPressed() {
    print('pressed $_selected');
}

И он напечатает текущее выбранное значение переключателя.

Вы можете заменить оператор печати своей навигационной логикой.

...