簡體   English   中英

僅將 _id 傳遞給下一個 Screen Flutter

[英]Pass only _id to next Screen Flutter

當我點擊一個項目時,我有一個項目列表,它會轉到下一個屏幕,因此我可以顯示單擊項目的相應詳細信息,當我嘗試傳遞給它時,整個對象數據將傳遞到下一頁

我顯示的 Json 數據,但我只需要將包含 Area_Id 對象的 _id 傳遞到下一個屏幕

"Area_Id": {
            "_id": "5e27ffbccde0456455857c27",
            "Area_Name": "Morning meeting photo"
          },



"AreaList": [
    {
      "Report_Time_Type": 1,
      "WeakDay": "Friday",
      "_id": "5e27ffc0cde0456455857c4f",
      "Branch_Id": {
        "_id": "5e27ffb7cde0456455857c21",
        "Name": "CHERTHALA",
        "Order_Id": 4
      },
      "Section_Id": {
        "_id": "5e27ffb9cde0456455857c25",
        "Section_Head": "Sales",
        "Order_Id": 1
      },
      "Area_Id": {
        "_id": "5e27ffbccde0456455857c27",
        "Area_Name": "Morning meeting photo"
      },
      "From_Time": "9:00 AM",
      "To_Time": "9:05 AM"
    },
]

這是第一頁代碼顫振視圖

         return Column(
            children: <Widget>[
              GestureDetector(
                onTap: () {
                  Navigator.push(
                      context,
                      MaterialPageRoute(
                          builder: (context) => ImageScreen(data.Area_Id)));
                },
                child: Card(
                  elevation: 15,
                  child: Column(
                    mainAxisSize: MainAxisSize.max,
                    children: <Widget>[
                      Row(
                        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                        children: <Widget>[
                          Expanded(
                            flex: 3,
                            child: Padding(
                              padding: EdgeInsets.all(30),
                              child: Text(
                                data.Area_Name.toString(),
                                style: TextStyle(
                                    fontWeight: FontWeight.bold,
                                    fontSize: 14,
                                    color: Colors.black87),
                              ),
                            ),
                          ),

                        ],
                      )
                    ],
                  ),
                ),
              ),

  Future<String> getDailyList() async {
    Future dailystatus = SharedPrefrence().getbranchId();
    Future daily = SharedPrefrence().getsectionId();
    Future token = SharedPrefrence().getToken();

    dailystatus.then((data) async {
      var branchid = data;

      daily.then((data) async {
        var section_id = data;

        token.then((data) async {
          var token = data;
          var response = await http.post(Urls.BRANCH_MAPPER,
              headers: {
                "Content-Type": "application/json",
                "Authorization": "Bearer $token",
              },
              body: json.encode({
                "Report_Time_Type": "1",
                "Branch_Id": branchid,
                "Section_Id": section_id,
              }));


          print('Respone ${response.body}');
          if (response.statusCode == 200) {
            try {
              var resp = response.body;
              Map<String, dynamic> value = json.decode(resp);
              var report = value['AreaList'];
              for (int i = 0; i < report.length; i++) {
                var data = report[i];
                var areaName = data["Area_Id"]["Area_Name"];
                Dailylist.add(DailyModel.fromJson(data, areaName));
              }
              setState(() {
                array_lenth = Dailylist.length;
              });
            } catch (e) {
              e.toString();
            }
          }
        });
      });
    });
  }
}

和首頁的這個模型

   class  DailyModel {

      String id;
      String From_Time;
      String To_Time;
      String Area_Name;
      String WeakDay;
      String Report_Time_Type;
      String Area_Id;

      DailyModel({this.id,this.From_Time,this.To_Time,this.Area_Name,this.WeakDay,this.Report_Time_Type,this.Area_Id});

      DailyModel.fromJson(json, areaName)
          : id = json['_id'].toString(),
            From_Time = json['From_Time'].toString(),
            To_Time = json['To_Time'].toString(),
            WeakDay = json['WeakDay'].toString(),
            Area_Id = json['_Id'].toString(),
            Report_Time_Type = json['Report_Time_Type'].toString(),
            Area_Name = areaName;
    }

我相信這是正確的ImageModel data = Imagelist[index];

也許您應該刪除ImageScreen類。

你可以這樣做

class BranchDailyScreen extends StatefulWidget {
  @override
  _BranchDailyScreenState createState() => _BranchDailyScreenState();
}

class _BranchDailyScreenState extends State<BranchDailyScreen> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Branch Daily Screen'),
      ),
      body: Container(
        padding: const EdgeInsets.all(8),
        child: ListView.builder(
            itemCount: 10,
            itemBuilder: (context, index) {
              return InkWell(
                onTap: () => Navigator.push(
                    context,
                    MaterialPageRoute(
                        builder: (context) => ImageScreen(area_id: '$index'))),
                child: Card(
                  child: Text('Item# $index'),
                ),
              );
            }),
      ),
    );
  }
}

然后傳遞到圖像屏幕

class ImageScreen extends StatefulWidget {
  final String area_id;

  const ImageScreen({Key key, this.area_id}) : super(key: key);

  @override
  _ImageScreenState createState() => _ImageScreenState();
}

class _ImageScreenState extends State<ImageScreen> {
  String image = 'https://picsum.photos/250?image=';

  @override
  Widget build(BuildContext context) {
  print(widget.area_id);
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.area_id),
      ),
      body: Center(
        child: Image.network('$image${widget.area_id}'),
      ),
    );
  }
}

在您的模型定義中

class  DailyModel {

      String id;
      String From_Time;
      String To_Time;
      String Area_Name;
      String WeakDay;
      String Report_Time_Type;
      String Area_Id;

      DailyModel({this.id,this.From_Time,this.To_Time,this.Area_Name,this.WeakDay,this.Report_Time_Type,this.Area_Id});

      DailyModel.fromJson(json, areaName)
          : id = json['_id'].toString(),
            From_Time = json['From_Time'].toString(),
            To_Time = json['To_Time'].toString(),
            WeakDay = json['WeakDay'].toString(),
            Area_Id = json['_Id'].toString(),
            Report_Time_Type = json['Report_Time_Type'].toString(),
            Area_Name = areaName;
    }

我想你打錯了

        Area_Id = json['_Id'].toString(),

它應該是

        Area_Id = json['_id'].toString(),

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM