Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 颤振将值添加到另一个类列表_Flutter_Dart - Fatal编程技术网

Flutter 颤振将值添加到另一个类列表

Flutter 颤振将值添加到另一个类列表,flutter,dart,Flutter,Dart,我想将日期选择器值添加到列表中 当用户选择日期后,我将调用_AddFieldDynamicItem中的函数[addToDateList] 对于此功能,它将添加到列表中: List <DateTime> dateList=[]; List dateList=[]; 哪个在_AddFieldDynamicTest中 单击“添加另一个”后,我不知道为什么它只能记录最新的选择器值 我是否需要使用其他存储方法,如SQLLite或共享首选项 import 'dart:convert'; i

我想将日期选择器值添加到列表中

当用户选择日期后,我将调用_AddFieldDynamicItem中的函数[addToDateList]

对于此功能,它将添加到列表中:

List <DateTime> dateList=[];
List dateList=[];
哪个在_AddFieldDynamicTest中

单击“添加另一个”后,我不知道为什么它只能记录最新的选择器值

我是否需要使用其他存储方法,如SQLLite或共享首选项

import 'dart:convert';

import 'package:flutter/material.dart';
class AddFieldDynamicTest extends StatefulWidget {
  @override
  _AddFieldDynamicTest createState() => _AddFieldDynamicTest();
}

class _AddFieldDynamicTest extends State<AddFieldDynamicTest> {
  Map<String, String> _formdata = {};

  var _myPets = List<Widget>();
  
  List <DateTime> dateList=[];

  int _index = 1;

  void _add() {
    _myPets = List.from(_myPets)
      ..add(AddFieldDynamicItem(_index));

    setState(() {
      _index += 1;
    });
  }
  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    _add();
  }

  addToDateList(DateTime d){
      dateList.add(d);  
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      floatingActionButton: FloatingActionButton(
        onPressed: () => getDateList(),
        child: Text('Save'),
      ),
      appBar: AppBar(
        title: Text('Add Test 2'),
        actions: <Widget>[
          FlatButton(
            child: Text('Add another'),
            onPressed: _add,
          ),
        ],
      ),
      body: ListView(
        children: _myPets,
      ),
    );
  }
  getDateList(){
    print(dateList.length);
  }
}

class AddFieldDynamicItem extends StatefulWidget {
  AddFieldDynamicItem(this._index);
  final int _index;
  @override
  _AddFieldDynamicItem createState() => _AddFieldDynamicItem(_index);
}

class _AddFieldDynamicItem extends State<AddFieldDynamicItem> {

  _AddFieldDynamicItem(this._index);
  String _value = '';
  final int _index;
  List<DateTime> d=[];

  Future _selectDate() async {
    DateTime picked = await showDatePicker(
        context: context,
        initialDate: new DateTime.now(),
        firstDate: new DateTime(2000),
        lastDate: new DateTime(2100)
    );
    if(picked != null)
      _AddFieldDynamicTest().addToDateList(picked);
      setState(() {
        _value = picked.toString();
      });
  }
  
  @override
  Widget build(BuildContext context) {
    return Column(
      children: <Widget>[
        new Column(
          children: <Widget>[
            new Text('$_index . Current Date'),
            new Text(_value),
            new RaisedButton(onPressed: _selectDate, child: new Text('Date picker'),)
          ],
        )
      ],
    );
  }
}
导入'dart:convert';
进口“包装:颤振/材料.省道”;
类AddFieldDynamicTest扩展StatefulWidget{
@凌驾
_AddFieldDynamicTest createState()=>\u AddFieldDynamicTest();
}
类_AddFieldDynamicTest扩展状态{
映射_formdata={};
var_myPets=List();
列表日期列表=[];
int_指数=1;
void_add(){
_myPets=列表。从(\u myPets)
…添加(AddFieldDynamicItem(_索引));
设置状态(){
_指数+=1;
});
}
@凌驾
void initState(){
//TODO:实现initState
super.initState();
_添加();
}
addToDateList(日期时间d){
日期表.添加(d);
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
浮动操作按钮:浮动操作按钮(
onPressed:()=>getDateList(),
子项:文本('Save'),
),
appBar:appBar(
标题:文本(“添加测试2”),
行动:[
扁平按钮(
子项:文本(“添加另一个”),
按下按钮:_添加,
),
],
),
正文:ListView(
孩子们:我的宠物,
),
);
}
getDateList(){
打印(日期列表长度);
}
}
类AddFieldDynamicItem扩展StatefulWidget{
AddFieldDynamicItem(此索引);
最终综合指数;
@凌驾
_AddFieldDynamicItem createState()=>\u AddFieldDynamicItem(\u索引);
}
类_AddFieldDynamicItem扩展状态{
_AddFieldDynamicItem(此索引);
字符串_值=“”;
最终综合指数;
列表d=[];
Future\u selectDate()异步{
已拾取日期时间=等待显示日期选择器(
上下文:上下文,
initialDate:new DateTime.now(),
firstDate:新的日期时间(2000年),
lastDate:新日期时间(2100)
);
如果(已拾取!=null)
_AddFieldDynamicTest().addToDateList(已拾取);
设置状态(){
_value=picked.toString();
});
}
@凌驾
小部件构建(构建上下文){
返回列(
儿童:[
新专栏(
儿童:[
新文本(“$\u index.Current Date”),
新文本(_值),
新建RaisedButton(按下时:\ u selectDate,child:new Text('Date picker'),)
],
)
],
);
}
}
“\u AddFieldDynamicTest().addToDateList(picked);”将生成新实例

所以,像这样修理


是否要显示以前选定的所有选定值?
_myPets = List.from(_myPets)
  ..add(AddFieldDynamicItem(_index));
_myPets = List.from(_myPets)
  ..add(AddFieldDynamicItem(_index, addToDateList));
AddFieldDynamicItem(this._index);
final int _index;
AddFieldDynamicItem(this._index, this.addToDateList);
final int _index;
final Function(DateTime) addToDateList;
if(picked != null)
  _AddFieldDynamicTest().addToDateList(picked);
if (picked != null) widget.addToDateList(picked);