在Flutter中将无状态小部件从一个屏幕传递到另一个屏幕

时间:2020-06-28 03:32:52

标签: flutter dart

我尝试创建一个form builder,在一个屏幕上,当我点击{{1 }},它应该构造一个新的container小部件。我知道如何在同一屏幕上执行此操作,但是icon我想在另一屏幕上构建gesture detector
这是container类。

DatePicker

这是我的日期选择器课程

onTap

这是我的Datepicker类,如何在这里构造以上Form Component类。

class FormComponents extends StatefulWidget {
  @override
  _FormComponentsState createState() => _FormComponentsState();
}

class _FormComponentsState extends State<FormComponents> {
  final GlobalKey<FormBuilderState> _fbKey = GlobalKey<FormBuilderState>();
  int _count = 0;
  final formData = FormWidgetData(widget: DatePicker());

  @override
  Widget build(BuildContext context) {
    List<Widget> datePicker = List.generate(_count, (index) => DatePicker());

    return Scaffold(
      appBar: AppBar(
        title: Text('Form Components'),
      ),
      body: Container(
        margin: EdgeInsets.all(8.0),
        child: Column(
          children: <Widget>[
            FormBuilder(
              key: _fbKey,
              initialValue: {
                'date': DateTime.now(),
                'accept_terms': false,
              },
              autovalidate: true,
              child: Column(
                children: <Widget>[
                  Builder(
                    builder: (BuildContext context) {
                      return GestureDetector(
                        onTap: () {
                          setState(() {
                            _count = _count + 1;
                          });

                          Scaffold.of(context).showSnackBar(
                            SnackBar(
                              content: Text('Date Picker'),
                              duration: Duration(seconds: 2),
                            ),
                          );
                        },
                        child: Container(
                          margin: EdgeInsets.all(16.0),
                          padding: EdgeInsets.all(8.0),
                          height: 100.0,
                          width: 120.0,
                          color: Colors.black,
                          child: Column(
                            crossAxisAlignment: CrossAxisAlignment.center,
                            mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                            children: <Widget>[
                              Icon(
                                Icons.date_range,
                                color: Colors.white,
                              ),
                              Text(
                                'Date Picker',
                                style: TextStyle(
                                    color: Colors.white, fontSize: 18.0),
                              ),
                            ],
                          ),
                        ),
                      );
                    },
                  ),
                  Container(
                    height: 200.0,
                    margin: EdgeInsets.all(8.0),
                    child: Expanded(
                      child: ListView(
                        children: datePicker,
                      ),
                    ),
                  ),
                ],
              ),
            ),
          ],
        ),
      ),
    );
  }
}  

enter image description here

0 个答案:

没有答案