Dart 如何返回颤振中的一个项目和项目列表
我构建了一个应用程序,用于从服务器返回用户信息,这些信息可能包含项目或项目列表 我的问题是,当我将变量定义为列表时,它会返回项目列表,但当我只想返回一个项目时,它会出错;当我将变量定义为映射时,它会返回一个项目,但当我返回列表时,它会出错 我怎样才能解决这个问题 这是我的密码Dart 如何返回颤振中的一个项目和项目列表,dart,flutter,Dart,Flutter,我构建了一个应用程序,用于从服务器返回用户信息,这些信息可能包含项目或项目列表 我的问题是,当我将变量定义为列表时,它会返回项目列表,但当我只想返回一个项目时,它会出错;当我将变量定义为映射时,它会返回一个项目,但当我返回列表时,它会出错 我怎样才能解决这个问题 这是我的密码 import 'package:flutter/material.dart'; import 'package:idb/pages/aboutus.dart'; import 'package:idb/pages/logo
import 'package:flutter/material.dart';
import 'package:idb/pages/aboutus.dart';
import 'package:idb/pages/logout.dart';
import 'package:idb/utilities/cardinfo.dart';
import 'package:idb/utilities/getTokenParameter.dart';
import 'package:date_range_picker/date_range_picker.dart' as DateRagePicker;
import 'package:idb/utilities/postRequest.dart';
String userid = '0000';
Future getUsername() async {
var tokeninfo = await parseJwt();
userid = tokeninfo['117115101114105100'];
}
class HomePage extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return HomePageState();
}
}
class HomePageState extends State<HomePage> {
List item;
cardfoo() async {
Map<String, dynamic> user = await getCards(userid);
item = user['ResponseData']['data']['ROW'];
if (mounted) {
setState(() {
item = user['ResponseData']['data']['ROW'];
print('item: ${item}');
});
}
return 'success';
}
getTransactions(
String cardLast4digits, String dateFrom, String dateTo) async {
var tokeninfo = await parseJwt();
print(tokeninfo);
print(cardLast4digits);
String userid = tokeninfo['117115101114105100'];
String username = tokeninfo['11711510111411097109101'];
String url =
'http://192.168.128.130:';
final Map<String, dynamic> authData = {
'Userid': userid,
'Username': username,
'Last4Digit': cardLast4digits,
'DateFrom': dateFrom,
'DateTo': dateTo,
};
print('befor post: ${authData}');
Map<String, dynamic> responseData = await post(url, authData);
print(responseData);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Home"),
),
body: item == null
? Center(
child: CircularProgressIndicator(),
)
: ListView.builder(
itemCount: item == null ? 0 : item.length,
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemBuilder: (BuildContext context, int index) {
return new Column(
children: <Widget>[
Card(
margin: EdgeInsets.only(
top: 20,
left: 15,
right: 15,
),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(15.0),
),
color: Colors.white70,
child: new Column(
children: <Widget>[
new Padding(
padding: new EdgeInsets.all(7.0),
child: new Column(
children: <Widget>[
new Row(children: <Widget>[
new Padding(
padding: new EdgeInsets.all(7.0),
child: new Text('Embossed Name:',
style: new TextStyle(
fontSize: 15.0,
color: Colors.orange)),
),
new Padding(
padding: new EdgeInsets.all(7.0),
child: new Text(
item[index]['EMBOSSED_NAME'],
style:
new TextStyle(fontSize: 15.0)),
),
]),
SizedBox(
height: 10,
),
Column(
children: <Widget>[
Row(
children: <Widget>[
FlatButton.icon(
textColor: Colors.blue,
icon: Icon(
Icons.calendar_today), //`Icon` to display
label: Text('Transctions'),
onPressed: () async {
final List<DateTime> picked =
await DateRagePicker.showDatePicker(
context: context,
initialFirstDate: new DateTime.now(),
initialLastDate: (new DateTime.now())
.add(new Duration(days: 7)),
firstDate: new DateTime(2015),
lastDate: new DateTime(2020));
if (picked != null && picked.length == 2) {
getTransactions(
item[index]['CARD_NO'],
picked[0].toString(),
picked[1].toString());
}
},
),
],
),
],
),
],
);
},
));
}
@override
void initState() {
super.initState();
this.cardfoo();
}
}
导入“包装:颤振/材料.省道”;
导入“package:idb/pages/aboutus.dart”;
导入“package:idb/pages/logout.dart”;
导入“package:idb/utilities/cardinfo.dart”;
导入“package:idb/utilities/getTokenParameter.dart”;
导入“package:date\u range\u picker/date\u range\u picker.dart”作为DateRagePicker;
导入“package:idb/utilities/postRequest.dart”;
字符串userid='0000';
Future getUsername()异步{
var tokeninfo=await parseJwt();
userid=tokeninfo['1171115101114105100'];
}
类主页扩展了StatefulWidget{
@凌驾
状态createState(){
返回HomePageState();
}
}
类HomePageState扩展了状态{
清单项目;
cardfoo()异步{
Map user=wait getCards(userid);
item=用户['ResponseData']['data']['ROW'];
如果(已安装){
设置状态(){
item=用户['ResponseData']['data']['ROW'];
打印('item:${item}');
});
}
回归"成功",;
}
getTransactions(
字符串cardLast4digits、字符串dateFrom、字符串dateTo)异步{
var tokeninfo=await parseJwt();
打印(令牌信息);
打印(CardLast4数字);
字符串userid=tokeninfo['1171115101114105100'];
字符串username=tokeninfo['117111011411097109101'];
字符串url=
'http://192.168.128.130:';
最终地图授权数据={
“Userid”:Userid,
“用户名”:用户名,
“Last4Digit”:CardLast4Digit,
“DateFrom”:DateFrom,
“DateTo”:DateTo,
};
打印('beforpost:${authData}');
Map responseData=等待发布(url、authData);
打印(应答数据);
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“主页”),
),
正文:项==null
?中心(
子对象:CircularProgressIndicator(),
)
:ListView.builder(
itemCount:item==null?0:item.length,
滚动方向:轴垂直,
收缩膜:对,
itemBuilder:(构建上下文,int索引){
返回新列(
儿童:[
卡片(
页边距:仅限边距(
前20名,
左:15,
右:15,
),
形状:圆形矩形边框(
边界半径:边界半径。圆形(15.0),
),
颜色:颜色。白色70,
子:新列(
儿童:[
新填料(
填充:新边缘设置。全部(7.0),
子:新列(
儿童:[
新行(儿童:[
新填料(
填充:新边缘设置。全部(7.0),
子项:新文本('浮雕名称:',
样式:新文本样式(
字体大小:15.0,
颜色:颜色。橙色),
),
新填料(
填充:新边缘设置。全部(7.0),
儿童:新文本(
项目[索引][“浮雕名称”],
风格:
新的文本样式(fontSize:15.0)),
),
]),
大小盒子(
身高:10,
),
纵队(
儿童:[
划船(
儿童:[
FlatButton.icon(
textColor:Colors.blue,
图标:图标(
Icons.calendar_today),//`Icon`显示
标签:文本(“转换”),
onPressed:()异步{
最后挑选的名单=
等待DateRagePicker.showDatePicker(
上下文:上下文,
initialFirstDate:new DateTime.now(),
initialLastDate:(新的DateTime.now())
.添加(新的持续时间(天:7)),
firstDate:新的日期时间(2015年),
最后日期:新日期时间(2020年);
if(picked!=null&&picked.length==2){
getTransactions(
项目[索引][“卡号”],
已拾取[0]。toString(),
已拾取[1]。toString());
}
},
),
],
),
],
),
],
);
},
Map<String, dynamic> user = await getCards(userid);
Map<String, dynamic> user = (await getCards(userid))[0];