Flutter 在颤振中切换按钮值显示

Flutter 在颤振中切换按钮值显示,flutter,flutter-layout,android-togglebutton,Flutter,Flutter Layout,Android Togglebutton,向所有人致意 我希望在单击切换按钮时显示并存储该按钮中使用的值。 在这里,我有点不知所措 下面是我制作切换按钮的代码-: import 'package:flutter/material.dart'; import 'package:hitch_fun1/Components/constants.dart'; import 'package:hitch_fun1/Components/Reusable_card.dart'; import 'package:flutter/cupertino.d

向所有人致意

我希望在单击切换按钮时显示并存储该按钮中使用的值。 在这里,我有点不知所措

下面是我制作切换按钮的代码-:

import 'package:flutter/material.dart';
import 'package:hitch_fun1/Components/constants.dart';
import 'package:hitch_fun1/Components/Reusable_card.dart';
import 'package:flutter/cupertino.dart';

class sample extends StatefulWidget {
  @override
  _sampleState createState() => _sampleState();
}

class _sampleState extends State<sample> {

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('BottomModalSheet'),
      ),
      body: InkWell(
          child: TextField(
            decoration: InputDecoration(
              enabled: false,
              suffixIcon: Padding(
                padding: EdgeInsets.only(top: 15),
                child: Icon(Icons.add),
              ),
              prefixIcon: Padding(
                padding: EdgeInsets.only(top: 15),
                child: Icon(Icons.favorite_border_rounded),
              ),
            ),
          ),
          onTap: () {
            _showBottomSheet(context);
          }),
    );
  }

  List<bool> isSelected;

  @override
  void initState() {
    isSelected = [false, false, false];
    super.initState();
    focusToggle = [focusNodeButton1, focusNodeButton2, focusNodeButton3];
  }

  FocusNode focusNodeButton1 = FocusNode();
  FocusNode focusNodeButton2 = FocusNode();
  FocusNode focusNodeButton3 = FocusNode();
  List<FocusNode> focusToggle;

  @override
  void dispose() {
    // Clean up the focus node when the Form is disposed.
    focusNodeButton1.dispose();
    focusNodeButton2.dispose();
    focusNodeButton3.dispose();
    super.dispose();
  }

  _showBottomSheet(context) {
    showModalBottomSheet(
        context: context,
        builder: (BuildContext c) {
          return StatefulBuilder(
            builder: (BuildContext context,
                void Function(void Function()) setState) {
              return Container(
                  height: 250,
                  child: Row(
                      crossAxisAlignment: CrossAxisAlignment.center,
                      mainAxisAlignment: MainAxisAlignment.center,
                      children: [
                        Container(
                          child: ToggleButtons(
                            // borderColor: Colors.black,
                            fillColor: Colors.white,
                            borderWidth: 4,
                            selectedBorderColor: Colors.pink,
                            selectedColor: Colors.pinkAccent,
                            splashColor: Colors.deepOrange[400],
                            focusNodes: focusToggle,
                            borderRadius: BorderRadius.only(
                                topLeft: Radius.circular(30),
                                bottomRight: Radius.circular(30)),
                            children: <Widget>[
                              Padding(
                                padding: const EdgeInsets.all(15.0),
                                child: Text(
                                  'you',
                                  style: TextStyle(fontSize: 16),
                                ),
                              ),
                              Padding(
                                padding: const EdgeInsets.all(15.0),
                                child: Text(
                                  'me',
                                  style: TextStyle(fontSize: 16),
                                ),
                              ),
                              Padding(
                                padding: const EdgeInsets.all(15.0),
                                child: Text(
                                  'them',
                                  style: TextStyle(fontSize: 16),
                                ),
                              ),
                            ],
                            onPressed: (int index) {
                              setState(() {
                                for (int i = 0; i < isSelected.length; i++) {
                                  isSelected[i] = i == index;
                                }
                                print(isSelected[index].toString());
                              });
                            },
                            isSelected: isSelected,
                          ),
                        ),
                      ]));
            },
          );
        });
  }
}

导入“包装:颤振/材料.省道”;
导入“package:hitch_fun1/Components/constants.dart”;
导入“包装:hitch_fun1/Components/Reusabled_card.dart”;
进口“包装:颤振/cupertino.dart”;
类示例扩展StatefulWidget{
@凌驾
_sampleState createState()=>_sampleState();
}
类_sampleState扩展状态{
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本('BottomModalSheet'),
),
主体:墨水池(
孩子:TextField(
装饰:输入装饰(
启用:false,
副词:填充(
填充:仅限边缘设置(顶部:15),
子:图标(Icons.add),
),
前缀:填充(
填充:仅限边缘设置(顶部:15),
子:图标(图标。最喜爱的\u边框\u圆角),
),
),
),
onTap:(){
_展示底稿(上下文);
}),
);
}
当选名单;
@凌驾
void initState(){
isSelected=[假,假,假];
super.initState();
focusToggle=[focusNodeButton1,focusNodeButton2,focusNodeButton3];
}
FocusNode focusNodeButton1=FocusNode();
FocusNode focusNodeButton2=FocusNode();
FocusNode focusNodeButton3=FocusNode();
列表焦点;
@凌驾
无效处置(){
//在释放表单时清理焦点节点。
focusNodeButton1.dispose();
focusNodeButton2.dispose();
focusNodeButton3.dispose();
super.dispose();
}
_显示底页(上下文){
showModalBottomSheet(
上下文:上下文,
生成器:(BuildContext c){
返回状态生成器(
生成器:(BuildContext上下文,
void函数(void函数())设置状态){
返回容器(
身高:250,
孩子:排(
crossAxisAlignment:crossAxisAlignment.center,
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
容器(
子:切换按钮(
//边框颜色:颜色。黑色,
fillColor:Colors.white,
边框宽度:4,
selectedBorderColor:Colors.pink,
selectedColor:Colors.pinkAccent,
splashColor:Colors.deepOrange[400],
focusNodes:focusToggle,
borderRadius:仅限borderRadius(
左上:半径。圆形(30),
右下角:半径。圆形(30)),
儿童:[
填充物(
填充:常数边集全部(15.0),
子:文本(
“你”,
样式:TextStyle(字体大小:16),
),
),
填充物(
填充:常数边集全部(15.0),
子:文本(
“我”,
样式:TextStyle(字体大小:16),
),
),
填充物(
填充:常数边集全部(15.0),
子:文本(
“他们”,
样式:TextStyle(字体大小:16),
),
),
],
onPressed:(int索引){
设置状态(){
for(int i=0;i
现在我想显示在切换按钮中选择的值,并将其显示在上面禁用的文本字段中。
有人能告诉我怎么做吗?

TextField
中添加一个
textdeditingcontroller
,然后在切换按钮上的
on按下
,将切换按钮值分配给控制器,如
textFieldController.text=isSelected[index].toString()

更新: 您可以设置列表中的3个值,
var值=['me'、'you'、'them']
然后在显示的
这样做
textEditingController.text=值[索引]

我想这会奏效的

我试过了,但仍然显示索引值检查更新的答案没有发生。。。它显示错误