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