Database 使用flatter从数据库获取构建列表
我正在构建一个项目,我正在尝试发布和获取数据。我是这样做的,首先,我登录应用程序,使用SharedReferences保存id值,然后将此id值发布到URL。在我发布到这个URL后,我想在我的屏幕上显示数据。但它给了我错误,我将在下面添加代码和错误:Database 使用flatter从数据库获取构建列表,database,list,flutter,dart,Database,List,Flutter,Dart,我正在构建一个项目,我正在尝试发布和获取数据。我是这样做的,首先,我登录应用程序,使用SharedReferences保存id值,然后将此id值发布到URL。在我发布到这个URL后,我想在我的屏幕上显示数据。但它给了我错误,我将在下面添加代码和错误: class ServisProfil extends StatefulWidget { @override _ServisProfilState createState() => _ServisProfilState(); } Be
class ServisProfil extends StatefulWidget {
@override
_ServisProfilState createState() => _ServisProfilState();
}
BekliyorModel bekliyorModelFromJson(String str) => BekliyorModel.fromJson(json.decode(str));
String bekliyorModelToJson(BekliyorModel data) => json.encode(data.toJson());
class BekliyorModel {
int id;
int ihaleId;
String plakaNo;
BekliyorModel({
this.id,
this.ihaleId,
this.plakaNo,
});
factory BekliyorModel.fromJson(Map<String, dynamic> json) => BekliyorModel(
id: json["id"],
ihaleId: json["ihale_id"],
plakaNo: json["plaka_no"],
);
Map<String, dynamic> toJson() => {
"id": id,
"ihale_id": ihaleId,
"plaka_no": plakaNo,
};
}
Future<BekliyorModel> postAndFetchBekliyorDatas(
String servisIdTitle,
String kategoriTitle,
) async {
final String apiUrl =
"https://www.esr.com.tr/dart-login.php";
final response = await http.post(apiUrl, body: {
"kategori": kategoriTitle,
"servis_id": servisIdTitle,
});
if (response.statusCode == 200) {
final String responseString = response.body;
return bekliyorModelFromJson(responseString);
} else {
return null;
}
}
class _ServisProfilState extends State<ServisProfil> {
BekliyorModel _id;
BekliyorModel _ihaleId;
BekliyorModel _plakaNo;
Widget _buildBekliyor() {
return Container(
height: 60,
child: RaisedButton(
highlightElevation: 0,
splashColor: Colors.transparent,
elevation: 0,
color: Colors.white,
child: Container(
alignment: Alignment.centerLeft,
child: Text(
'Bekliyor/Sonuçlanan',
style: TextStyle(fontSize: 18, color: Colors.black),
),
),
onPressed: () async {
final prefs = await SharedPreferences.getInstance();
final key = 'servis_id';
final String servisIdTitle = prefs.getString(key).toString();
final String kategoriTitle = 3.toString();
final BekliyorModel user = await postAndFetchBekliyorDatas(
servisIdTitle,
kategoriTitle,
);
setState(() {
_id = user;
_ihaleId = user;
_plakaNo = user;
});
_sendDataToBekliyor(context);
print(servisIdTitle.toString());
}),
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
width: 1,
color: Colors.black12,
),
),
),
);
}
void _sendDataToBekliyor(BuildContext context) {
int idSend = _id.id;
int ihaleIdSend = _ihaleId.ihaleId;
String plakaNoSend = _plakaNo.plakaNo;
Navigator.of(context).push(
CupertinoPageRoute(
builder: (context) => Bekliyor(
idSend: idSend,
ihaleIdSend: ihaleIdSend,
plakaNoSend: plakaNoSend,
),
),
);
}
@override
Widget build(BuildContext context) {
return _buildBekliyor();
}
}
类服务profil扩展StatefulWidget{
@凌驾
_ServisProfilState createState()=>_ServisProfilState();
}
BekliyorModel bekliyorModelFromJson(String str)=>BekliyorModel.fromJson(json.decode(str));
字符串bekliyorModelToJson(BekliyorModel数据)=>json.encode(data.toJson());
类Bekliyor模型{
int-id;
int ihaleId;
普拉卡诺弦;
贝克利约尔模型({
这个身份证,
这是我的名字,
这个,普拉卡诺,
});
factory BekliyorModel.fromJson(映射json)=>BekliyorModel(
id:json[“id”],
ihaleId:json[“ihale_id”],
plakaNo:json[“plaka_no”],
);
映射到JSON()=>{
“id”:id,
“ihale_id”:ihaleId,
“普拉卡诺”:普拉卡诺,
};
}
未来的PostAndFetchBekliyorData(
字符串名称,
弦乐,
)异步的{
最终字符串apirl=
"https://www.esr.com.tr/dart-login.php";
最终响应=等待http.post(APIRL,正文:{
“kategori”:kategoriTitle,
“服务id”:服务名称,
});
如果(response.statusCode==200){
最终字符串responseString=response.body;
返回bekliyorModelFromJson(responseString);
}否则{
返回null;
}
}
类_ServisProfilState扩展状态{
BekliyorModel\u id;
BekliyorModelu ihaleId;
BekliyorModel_plakaNo;
Widget_buildBekliyor(){
返回容器(
身高:60,
孩子:升起按钮(
Highlight标高:0,
splashColor:Colors.transparent,
海拔:0,
颜色:颜色,白色,
子:容器(
对齐:alignment.centerLeft,
子:文本(
“Bekliyor/Sonuçlanan”,
样式:TextStyle(字体大小:18,颜色:Colors.black),
),
),
onPressed:()异步{
final prefs=wait SharedPreferences.getInstance();
最终键='servis_id';
最后一个字符串servisIdTitle=prefs.getString(key.toString();
最终字符串kategorittle=3.toString();
最终BekliyorModel用户=等待PostAndFetchBekliyorData(
服务业名称,
kategoriTitle,
);
设置状态(){
_id=用户;
_ihaleId=用户;
_普拉卡诺=用户;
});
_sendDataToBekliyor(上下文);
打印(servisIdTitle.toString());
}),
装饰:盒子装饰(
边界:边界(
底部:边界侧(
宽度:1,
颜色:颜色。黑色,
),
),
),
);
}
void\u sendDataToBekliyor(构建上下文){
int idSend=_id.id;
int ihaleIdSend=\u ihaleId.ihaleId;
字符串plakaNoSend=\u plakaNo.plakaNo;
导航器.of(上下文).push(
CupertinoPageRoute(
生成器:(上下文)=>Bekliyor(
idSend:idSend,
ihaleIdSend:ihaleIdSend,
普拉卡诺森德:普拉卡诺森德,
),
),
);
}
@凌驾
小部件构建(构建上下文){
返回_buildBekliyor();
}
}
这是我想要查看数据的屏幕:
class Bekliyor extends StatelessWidget {
final int idSend;
final int ihaleIdSend;
final String plakaNoSend;
Bekliyor({
this.idSend,
this.ihaleIdSend,
this.plakaNoSend,
});
Widget _buildBody() {
return ListView.builder(
itemCount: //WHAT I WILL WRITE,
itemBuilder: (context, index) {
return Container(
margin: EdgeInsets.all(10),
child: MaterialButton(
splashColor: Colors.transparent,
highlightColor: Colors.transparent,
onPressed: () => Navigator.of(context).push(
CupertinoPageRoute(
builder: (context) => BekliyorDetay(),
),
),
child: Column(
children: <Widget>[
Center(
child: Text(plakaNoSend.toString()),
),
Center(
child: Text(ihaleNoSend.toString()),
),
Center(
child: Text(idSend.toString()),
),
],
),
),
decoration: BoxDecoration(
color: Colors.grey[200],
borderRadius: BorderRadius.circular(12.0),
boxShadow: [
BoxShadow(
color: Colors.grey,
offset: Offset(0.0, 1.0), //(x,y)
blurRadius: 6.0,
),
],
border: Border.all(width: 0.36, color: Colors.white),
),
);
},
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
body: _buildBody(),
);
}
class Bekliyor扩展了无状态小部件{
最终结束;
最终国际ihaleIdSend;
最后一串普拉卡诺森德;
贝克利约尔({
这个,这个,,
这是我的梦想,
这是普拉卡诺森德,
});
小部件_buildBody(){
返回ListView.builder(
itemCount://我将要写的内容,
itemBuilder:(上下文,索引){
返回容器(
保证金:所有(10),
子:材质按钮(
splashColor:Colors.transparent,
highlightColor:Colors.transparent,
onPressed:()=>Navigator.of(context).push(
CupertinoPageRoute(
生成器:(上下文)=>BekliyorDetay(),
),
),
子:列(
儿童:[
居中(
子项:文本(plakaNoSend.toString()),
),
居中(
子项:Text(ihaleNoSend.toString()),
),
居中(
子项:文本(idSend.toString()),
),
],
),
),
装饰:盒子装饰(
颜色:颜色。灰色[200],
边界半径:边界半径。圆形(12.0),
boxShadow:[
箱形阴影(
颜色:颜色。灰色,
偏移量:偏移量(0.0,1.0),/(x,y)
半径:6.0,
),
],
边框:边框。全部(宽度:0.36,颜色:颜色。白色),
),
);
},
);
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
背景颜色:Colors.white,
正文:_buildBody(),
);
}
给了我这个错误:
[VERBOSE-2:ui\u dart\u state.cc(166)]未处理的异常:类型“List”不是类型“Map”的子类型
类概览模式{
智力状态;
字符串消息;
清单概述;
概览模式({this.status,this.message,this.overview});
OverviewModal.fromJson(映射json)
:status=json[“status”],
message=json[“message”],
overview=List.from(json[“DetailList”])
.map((项)=>OverviewData.fromJson(项))
.toList();
}
类概览数据{
弦月;
字符串凭证号;
字符串凭证日期;
字符串数量;
OverviewData.fromJson(映射json)
:month=json[“month”],
voucherNumber=json[“vocher_no”],
voucherDate=json[“vocher_date”],
金额=json[“金额”];
}
在我的例子中,overview是一种列表类型,DetailList保存来自后端的列表数据
class OverviewModal {
int status;
String message;
List<OverviewData> overview;
OverviewModal({this.status, this.message, this.overview});
OverviewModal.fromJson(Map<String, dynamic> json)
: status = json["status"],
message = json["message"],
overview = List.from(json["DetailList"])
.map((item) => OverviewData.fromJson(item))
.toList();
}
class OverviewData {
String month;
String voucherNumber;
String voucherDate;
String amount;
OverviewData.fromJson(Map<String, dynamic> json)
: month = json["month"],
voucherNumber = json["vocher_no"],
voucherDate = json["vocher_date"],
amount = json["amount"];
}