Database 使用flatter从数据库获取构建列表

Database 使用flatter从数据库获取构建列表,database,list,flutter,dart,Database,List,Flutter,Dart,我正在构建一个项目,我正在尝试发布和获取数据。我是这样做的,首先,我登录应用程序,使用SharedReferences保存id值,然后将此id值发布到URL。在我发布到这个URL后,我想在我的屏幕上显示数据。但它给了我错误,我将在下面添加代码和错误: class ServisProfil extends StatefulWidget { @override _ServisProfilState createState() => _ServisProfilState(); } Be

我正在构建一个项目,我正在尝试发布和获取数据。我是这样做的,首先,我登录应用程序,使用SharedReferences保存id值,然后将此id值发布到URL。在我发布到这个URL后,我想在我的屏幕上显示数据。但它给了我错误,我将在下面添加代码和错误:

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"];
 }