主頁 > 後端開發 > 在flutter中決議json時的問題

在flutter中決議json時的問題

2021-10-15 16:04:45 後端開發

我想決議過去巡航的json并在串列視圖中顯示資料。我在決議的時候得到了這個例外。未處理的例外:型別'CrusieModel'不是'Map<String, dynamic>'的子型別。 此外,當我試圖在串列視圖中顯示資料時,它顯示在 itemCount 的空值上呼叫了 Null 運算子。

我的API類

 final String baseUrl = "https://yourapilink";
   string">"eyJhbGciOiJIUzM4NCIsImtleSI6MjAxNzA5MjEsImlhdCI6MTYzMDk1MzAzNCiZXhwIjoxNjMxNTU3ODM0LCJpc3MiOiJodHRwOi8vYXBwLWFwaS5mcmVb2xZW5jcnVpc2VzLmNvbSJ9. eyJSb2xlcyI6WyJNeUNydWlzZSJdLCJab2hvSUQiOiIyOTIxMTwMDAwMDAyODMwODgifQ.OCjwy_Q8mWaJUBWTIzAfUvX4voMDdry_Y_LLj6s8nxt514BVNQk3yptcZFnD48Hd"/span>。
 
  Future<CrusieModel> getPastCruise( BuildContext context, String?  token) async {

    String url = baseUrl   "api/v1/atcore/user?token=$token"/span>。
    //Utilities.showLoaderDialog(context);.
    final response = await http.post(Uri.parse(url), headers: {
      'Content-Type''application/json''Authorization':'Bearer $token'。
    });

    debugPrint("jsonBody past and future:::: ${response.body}")。)
    print"jsonBody past and future:::: ${response.body}")。)
    print("nntoken::: $token")。)
    print("response Code cruise history::::) ${response.statusCode}")。)
    if(response.statusCode == 200){
      /Navigator.pop(context);
      // return json.decode(response.body);.
      return CrusieModel.fromJson(json.decode(response.body))。
    }else if(response.statusCode == 500){
      /Navigator.pop(context);
      return Utilities.errorDialog(" There was an error getting the information from Atcore or Zoho", context);
    }else{
      /Navigator.pop(context); 
      return Utilities.errorDialog("Something went wrong"/span>, context)。
    }
    // return data; 

  

我的模型類

import 'dart:convert'; CrusieModel crusieModelFromJson(String str) => CrusieModel.fromJson(json.decode(str) )。 String crusieModelToJson(CrusieModel data) => json.encode(data.toJson() )。 class CrusieModel { CrusieModel({ this.pastCruises, }); List<PastCruise>? pastCruises; factory CrusieModel.fromJson(Map<String, dynamic> json) => CrusieModel( pastCruises: List<PastCruise>.from(json["PastCruises"].map((x) => PastCruise.fromJson(x)) 。) ); Map<String, dynamic> toJson()=> { "PastCruises"List<dynamic>.from(pastCruises! .map((x) => x.toJson())。 }; } class PastCruise { PastCruise({ this.cruiseId, this.name, this.shortName, this. departureDate, this.returnDate。 this.duration。 this.shortDescription, this. departurePortCode, this. departurePortName, this. departurePortNameWithCountry, this.returnPortCode, this.returnPortName, this.returnPortNameWithCountry, this.shipCode, this.shipName, this.cruiseStatus, this.cruiseStatusApp, this.cruisingCategory, this.cruiseCancelledInfo, this.modifiedDate, this.isAddOnHoliday, this.bookingRef, this.agentName, this.guests, }); String? cruiseId; String? name; String? shortName; DateTime? departureDate; DateTime? returnDate。 int? duration; String? shortDescription; String? departurePortCode; String? departurePortName; String? departurePortNameWithCountry; String? returnPortCode; String? returnPortName; String? returnPortNameWithCountry; String? shipCode。 String? shipName; String? cruiseStatus。 String? cruiseStatusApp; String? cruisingCategory; String? cruiseCancelledInfo; DateTime? modifiedDate。 bool? isAddOnHoliday; String? bookingRef; String? agentName; String? guests; factory PastCruise.fromJson(Map<String, dynamic> json) => PastCruise( cruiseId: json["CruiseId"]。 name: json["Name"]。 shortName: json["ShortName"]。 出發日期。DateTime.parse(json["DepartureDate"] )。 returnDate。DateTime.parse(json["ReturnDate"]) 。 duration: json["Duration"]。 shortDescription: json["ShortDescription"]。 departurePortCode: json["DeparturePortCode"]。 departurePortName: json["DeparturePortName"]。 departurePortNameWithCountry: json["DeparturePortNameWithCountry"]。 returnPortCode: json["ReturnPortCode"]。 returnPortName: json["ReturnPortName"]。 returnPortNameWithCountry: json["ReturnPortNameWithCountry"]。 shipCode: json["shipCode"]。 shipName: json["ShipName"]。 cruiseStatus: json["CruiseStatus"]。 cruiseStatusApp: json["CruiseStatusApp"]。 cruisingCategory: json["CruisingCategory"]。 cruiseCancelledInfo: json["CruiseCancelledInfo"]。 modifiedDate。DateTime.parse(json["ModifiedDate"]) 。 isAddOnHoliday: json["IsAddOnHoliday"/span>]。 bookingRef: json["BookingRef"]。 agentName: json["AgentName"]。 guests: json["Guests"]。 ); Map<String, dynamic> toJson()=> { "CruiseId": cruiseId, "Name": 名稱。 "ShortName": 短名稱。 "DepartureDate": departureDate!.toIso8601String()。 "ReturnDate": returnDate!.toIso8601String(), "Duration": duration。 "ShortDescription": shortDescription。 "DeparturePortCode": 離開港口代碼。 "DeparturePortName": departurePortName, "DeparturePortNameWithCountry": departurePortNameWithCountry, "ReturnPortCode": returnPortCode。 "ReturnPortName": returnPortName。 "ReturnPortNameWithCountry": returnPortNameWithCountry。 "shipCode": 船舶代碼。 "ShipName": shipName, "CruiseStatus": cruiseStatus, "CruiseStatusApp": cruiseStatusApp, "CruisingCategory": cruisingCategory, "CruiseCancelledInfo": cruiseCancelledInfo, "ModifiedDate": modifiedDate!.toIso8601String(), "IsAddOnHoliday": isAddOnHoliday, "BookingRef": bookingRef, "AgentName": agentName。 "Guests": guests。 };

我的串列視圖Widget

itemCount: snapshot.data!.pastCruises!.length,我得到了在空值上使用的Null Check運算子

 Widget listviewWidget(){
    return FutureBuilder<CrusieModel>(
      future: pastCruises,
      構建者。(context, snapshot){
        log("${snapshot.data}", name: "DATA RECEIVED")。)
        /* if(snapshot.hasData){*/.
          return ListView.builder(
              shrinkWrap: true,
              itemCount: snapshot.data!.pastCruises!.length,
              物理學。BouncingScrollPhysics()。
              itemBuilder。(context, index){
                CrusieModel cruiseData = snapshot.data!

                return Padding(
                  padding: const EdgeInsets.symmetric( vertical: 8.0)。
                  孩子。
                  堆疊(

                    兒童。[
                      Image.asset("assets/images/ticket_bg.png",
                        高度。MediaQuery.of(context).size.height*0.35。
                        width: MediaQuery.of(context).size.width*0.90,
                        適合。BoxFit.fill,)。
                      容器(

                        width: MediaQuery.of(context).size.width*0.90,
                        兒童。列(

                          crossAxisAlignment: CrossAxisAlignment.center,
                          兒童。[
                            容器(

                              高度。MediaQuery.of(context).size.height*0.15。

                              孩子。 padding(
                                padding: const EdgeInsets.only( left: 50, right: 50, top: 30)。)
                                孩子。行(
                                  crossAxisAlignment: CrossAxisAlignment.start,
                                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
                                  兒童。[
                                    列(

                                      crossAxisAlignment: CrossAxisAlignment.start,
                                      children: [
                                        Text("Departure", style: TextStyle(fontFamily: 'Montserrat'。
                                            color: CustomColors.subtitleText, fontSize: 12),)。)
                                        行(
                                          兒童。[
                                            Text(/*items[index]. departureDate*/"25"。
                                              風格。TextStyle(fontFamily: 'Montserrat', color: CustomColors.madison,
                                                  fontWeight: FontWeight.bold, fontSize: 32),)。)
                                            欄目(
                                              兒童。[
                                                Text(/*items[index]. departureDateMonth*/"08"。
                                                  風格。TextStyle(fontFamily: 'Montserrat',color: CustomColors.subtitleText,
                                                      fontWeight: FontWeight.bold, fontSize: 12),)。)
                                                Text(/*items[index].departureDateYear*/"2008"/span>。
                                                  風格。TextStyle(fontFamily: 'Montserrat',color: CustomColors.madison,
                                                      fontWeight: FontWeight.bold, fontSize: 12),)。
                                              ],
                                            ),
                                          ],
                                        ),
                                      ],
                                    ),
                                    欄目(
                                      兒童。[
                                        Icon(Icons.d directions_boat)。
                                        Text("${cruiseData.pastCruises?[index].duration ? ""}", style: TextStyle(fontFamily: 'Montserrat',fontWeight: FontWeight.w700),)。)
                                      ],
                                    ),
                                    列(
                                      crossAxisAlignment: CrossAxisAlignment.start,
                                      兒童。[
                                        Text('Return', style: TextStyle(fontFamily: 'Montserrat',color: CustomColors.subtitleText, fontSize: 12),)。)
                                        行(
                                          兒童。[
                                            Text(/*items[index].returnDate*/"18"/span>。
                                              風格。TextStyle(fontFamily: 'Montserrat', color: CustomColors.madison,
                                                  fontWeight: FontWeight.bold, fontSize: 32),)。)
                                            欄目(
                                              兒童。[
                                                Text(/*items[index].returnDateMonth*/"03"/span>。
                                                  風格。TextStyle(fontFamily: 'Montserrat',color: CustomColors.subtitleText,
                                                      fontWeight: FontWeight.bold, fontSize: 12),)。)
                                                Text(/*items[index].returnDateYear*/"2019"/span>。
                                                  風格。TextStyle(fontFamily: 'Montserrat',color: CustomColors.madison,
                                                      fontWeight: FontWeight.bold, fontSize: 12),)。
                                              ],
                                            ),
                                          ],
                                        ),
                                      ],
                                    ),
                                  ],
                                ),
                              ),
                            ),

                            填充(
                              padding: const EdgeInsets.fromLTRB(50, 20, 50, 30)。
                              孩子。容器(
                                child: 列(
                                  crossAxisAlignment: CrossAxisAlignment.start,
                                  兒童。[
                                    行(
                                      mainAxisAlignment: MainAxisAlignment.spaceBetween,
                                      children: [
                                        列(
                                          crossAxisAlignment: CrossAxisAlignment.start,
                                          children: [
                                            Text("Passenger", style: TextStyle(fontFamily: 'Montserrat',color: CustomColors. subtitleText, fontSize: 12),)。)
                                            Text("/*items[index].passengerName*/""amit kumar", style: TextStyle(fontFamily: 'Montserrat',color: CustomColors.madison,
                                                fontWeight: FontWeight.bold),)
                                          ],),
                                        列(
                                          crossAxisAlignment: CrossAxisAlignment.start,
                                          兒童。[
                                            Text("Booking Reference", style: TextStyle(fontFamily: 'Montserrat',color: CustomColors. subtitleText, fontSize: 12),)。)
                                            Text("${cruiseData.pastCruises![index].bookingRef}", style: TextStyle(fontFamily: 'Montserrat',color: CustomColors.madison,
                                                fontWeight: FontWeight.bold),)
                                          ],)
                                      ],),
                                    SizedBox(高度: 20,)。
                                    行(
                                      mainAxisAlignment: MainAxisAlignment.spaceBetween,
                                      兒童。[
                                        列(
                                          crossAxisAlignment: CrossAxisAlignment.start,
                                          children: [
                                            Text("TRavel Agency"/span>, style: TextStyle(fontFamily: 'Montserrat',color: CustomColors. subtitleText, fontSize: 12),)。)
                                            Text("${cruiseData.pastCruises![index].agentName}", style: TextStyle(fontFamily: 'Montserrat',color: CustomColors.madison,
                                                fontWeight: FontWeight.bold),)
                                          ],),
                                        SizedBox(width: 10,)
                                      ],)

                                  ],
                                ),
                              ),
                            )

                          ],
                        ),
                      )
                    ],
                  ),

                );
              });
        /*}else{
          return Center(child: CircularProgressIndicator())。
        }*/

      },

    );
  }

我不明白這里的問題是什么。我只是想在一個串列視圖中顯示過去的巡航引數。

uj5u.com熱心網友回復:

首先我證明了輸出

在此輸入圖片描述

代碼:

 final String baseUrl = "https://appservice-staging.simpleclick.co.uk/";
  String token = "eyJhbGciOiJIUzM4N"/span>;

  @override
  void initState() {
    super.initState()。
    getPastCruise()。
  }

@override.
  Widget build(BuildContext context) {
    return ListView.builder(
      shrinkWrap: true,
      itemCount: yourModelName!.futureCruises!.length,
      物理學。NeverScrollableScrollPhysics()。
      itemBuilder。(context, index) {
        return ListTile(
          標題。Text(yourModelName!.futureCruises![index].duration!.toString())。
        );
      },
    );
  }

  getPastCruise() async {
    String url = '${baseUrl}api/v1/atcore/user?token=$token' /span>。
    //Utilities.showLoaderDialog(context);.
    final response = await http.post(Uri.parse(url), headers: {
      'Content-Type''application/json''Authorization':'Bearer $token'>。
    });

    if(response.statusCode==200){
      setState(() {
        yourModelName=YourModelName.fromJson(jsonDecode(response.body))。
    }

YourModelName.dart

//要決議這個JSON資料,請執行//
//最終 yourModelName = yourModelNameFromJson(jsonString);

import 'dart:convert';

YourModelName yourModelNameFromJson(String str) => YourModelName.fromJson(json.decode(str) )。

String yourModelNameToJson(YourModelName data) => json.encode(data.toJson() )。

class YourModelName {
  YourModelName({
    this.Oceans,
    this.pastCruises,
    this.futureCruises,
  });

  海洋? 海洋。
  List<PastCruise>? pastCruises;
  List<FutureCruise>? futureCruises。

  factory YourModelName.fromJson(Map<String, dynamic> json) => YourModelName(
    oceans: Oceans.fromJson(json["Oceans"/span>])。
    pastCruises: List<PastCruise>.from(json["PastCruises"].map((x) => PastCruise.fromJson(x) ))。
    futureCruises。List<FutureCruise>.from(json["FutureCruises"].map((x) => FutureCruise.fromJson(x)) 。)
  );

  Map<String, dynamic> toJson()=> {
    "Oceans"/span>: oceans!.toJson(),
    "PastCruises": List<dynamic>.from(pastCruises! .map((x) => x.toJson())。
    "FutureCruises"List<dynamic>.from(futureCruises! .map((x) => x.toJson())。
  };
}

class FutureCruise {
  FutureCruise({
    this.cruiseId,
    this.name,
    this.shortName,
    this. departureDate,
    this.returnDate。
    this.duration。
    this.shortDescription,
    this. departurePortCode,
    this. departurePortName,
    this. departurePortNameWithCountry,
    this.returnPortCode,
    this.returnPortName,
    this.returnPortNameWithCountry,
    this.shipCode,
    this.shipName,
    this.cruiseStatus,
    this.cruiseStatusApp,
    this.cruisingCategory,
    this.cruiseCancelledInfo,
    this.modifiedDate,
    this.bookingRef,
    this.bookedDate。
    this.agentName,
    this.fareTypeId,
    this.featDescription,
    this.票價代碼。
    this.guest,
    this.theme,
    this.portTerminal,
    this.gifMissing,
    this.fights,
    this.cabins。
  });

  CruiseId? CruiseId。
  Name? 名稱。
  Name? shortName。
  DateTime? departureDate。
  DateTime? returnDate。
  int? duration;
  String? shortDescription;
  港口代碼? departurePortCode。
  PortName? departurePortName。
  PortNameWithCountry? departurePortNameWithCountry。
  PortCode? returnPortCode。
  PortName? returnPortName。
  PortNameWithCountry? returnPortNameWithCountry。
  ShipCode? shipCode。
  ShipName? shipName。
  CruiseStatus? cruiseStatus。
  String? cruiseStatusApp;
  CruisingCategory? CruisingCategory。
  String? cruiseCancelledInfo;
  DateTime? modifiedDate。
  String? bookingRef;
  DateTime? bookedDate;
  AgentName? agentName。
  FareTypeId? fareTypeId。
  FareDescription? fareDescription。
  FareCode? fareCode。
  Guest? 客人。
  Theme? 主題。
  PortTerminal? portTerminal。
  bool? gifMissing;
  List<dynamic> ? flights;
  List<Cabin>? 艙位。

  factory FutureCruise.fromJson(Map<String, dynamic> json) => FutureCruise(
    cruiseId: cruiseIdValues.map[json["CruiseId"] ]。
    name: nameValues.map[json["Name"] ]。
    shortName: nameValues.map[json["ShortName"] ]。
    出發日期。DateTime.parse(json["DepartureDate"])。
    returnDate。DateTime.parse(json["ReturnDate"]) 。
    duration: json["Duration"]。
    shortDescription: json["ShortDescription"]。
    departurePortCode: portCodeValues.map[json["DeparturePortCode"] ]。
    departurePortName: portNameValues.map[json["DeparturePortName"] ]。
    departurePortNameWithCountry: portNameWithCountryValues.map[json["DeparturePortNameWithCountry"] ]。
    returnPortCode: portCodeValues.map[json["ReturnPortCode"/span>]]。
    returnPortName: portNameValues.map[json["ReturnPortName"] ]。
    returnPortNameWithCountry: portNameWithCountryValues.map[json["ReturnPortNameWithCountry"] ]。
    shipCode:shipCodeValues.map[json["ShipCode"]]。
    shipName: shipNameValues.map[json["ShipName"/span>]]。
    cruiseStatus: cruiseStatusValues.map[json["CruiseStatus"/span>]]。
    cruiseStatusApp: json["CruiseStatusApp"/span>]。
    cruisingCategory: cruisingCategoryValues.map[json["CruisingCategory"] ]。
    cruiseCancelledInfo: json["CruiseCancelledInfo"]。
    modifiedDate。DateTime.parse(json["ModifiedDate"/span>])。
    bookingRef: json["BookingRef"]。
    bookedDate: DateTime.parse(json["BookedDate"])。
    agentName: agentNameValues.map[json["AgentName"]]。
    fareTypeId: fareTypeIdValues.map[json["FareTypeId"] ]。
    fareDescription: fareDescriptionValues.map[json["FareDescription"] ]。
    fareCode: fareCodeValues.map[json["FareCode"/span>]]。
    guests: guestValues.map[json["客人"]]。
    theme: themeValues.map[json["Theme"] ]。
    portTerminal: portTerminalValues.map[json["PortTerminal"] ]。
    gifMissing: json["GIFMissing"]。
    航班。List<dynamic>.from(json["Flights"].map((x) => x) )。
    艙位。List<Cabin>.from(json["Cabins"].map((x) => Cabin.fromJson(x))。
  );

  Map<String, dynamic> toJson()=> {
    "CruiseId": cruiseIdValues.reverse[cruiseId]。
    "Name"/span>: nameValues.reverse[name],
    "ShortName": nameValues.reverse[shortName],
    "Duration": duration,
    "ShortDescription": shortDescription。
    "DeparturePortCode": portCodeValues.reverse[departurePortCode]。
    "DeparturePortName": portNameValues.reverse[departurePortName],
    "DeparturePortNameWithCountry": portNameWithCountryValues.reverse[ departurePortNameWithCountry]。
    "ReturnPortCode": portCodeValues.reverse[returnPortCode]。
    "ReturnPortName": portNameValues.reverse[returnPortName],
    "ReturnPortNameWithCountry"/span>: portNameWithCountryValues.reverse[returnPortNameWithCountry]。
    "shipCode": shipCodeValues.reverse[shipCode]。
    "ShipName": shipNameValues.reverse[shipName],
    "CruiseStatus": cruiseStatusValues.reverse[ cruiseStatus],
    "CruiseStatusApp": cruiseStatusApp,
    "CruisingCategory": cruisingCategoryValues.reverse[ cruisingCategory],
    "CruiseCancelledInfo": cruiseCancelledInfo,
    "BookingRef": bookingRef,
    "AgentName": agentNameValues.reverse[agentName]。
    "FareTypeId": fareTypeIdValues.reverse[failTypeId],
    "FareDescription": fareDescriptionValues.reverse[ fareDescription],
    "FareCode": fareCodeValues.reverse[fareCode]。
    "Guiders": guestValues.reverse[guests],
    "Theme": themeValues.reverse[theme],
    "PortTerminal"/span>: portTerminalValues.reverse[portTerminal],
    "GIFMissing": gifMissing,
    "Flights": List<dynamic>.from(flights! .map((x) => x))。
    "Cabins"List<dynamic>.from(cabins! .map((x) => x.toJson())。
  };
}

enum AgentName { DIRECT, F9255, THE_0_F1234 }

final agentNameValues = EnumValues({
  "DIRECT"/span>: AgentName.DIRECT。
  "F9255": AgentName.F9255。
  "0F1234": AgentName.THE_0_F1234
});

class Cabin{
  機艙({
    this. cabinNumber,
    this. deckId,
    this.cabinGrade,
    this.referenceNos,
    this.guestNames,
    this.checkInTime,
    this.checkInCloses,
  });

  String? cabinNumber;
  String? deckId;
  String? cabinGrade;
  String? referenceNos;
  Guest? guestNames。
  String? checkInTime;
  String? checkInCloses;

  factory Cabin.fromJson(Map<String, dynamic> json) => Cabin(
    cabinNumber: json["CabinNumber"/span>]。
    deckId: json["DeckId"]。
    cabinGrade: json["CabinGrade"]。
    referenceNos: json["ReferenceNos"]。
    guestNames: guestValues.map[json["GuestNames"] ]。
    checkInTime: json["CheckInTime"/span>]。
    checkInCloses: json["CheckInCloses"]。
  );

  Map<String, dynamic> toJson()=> {
    "CabinNumber"/span>: cabinNumber,
    "DeckId": deckId,
    "CabinGrade": cabinGrade,
    "ReferenceNos": 參考編號。
    "GuestNames": guestValues.reverse[guestNames],
    "CheckInTime": checkInTime,
    "CheckInCloses": checkInCloses。
  };
}

enum Guest { TEST_USER_JONATHAN_QUINNELL, EMPTY }

final guestValues = EnumValues({
  ""/span>: Guest.EMPTY。
  "Test User, Jonathan Quinnell": Guest.TEST_USER_JONATHAN_QUINNELL
});

enum CruiseId { T2122, S2124, T2129, L2222 }

final cruiseIdValues = EnumValues({
  "L2222"/span>: CruiseId.L2222。
  "S2124": CruiseId.S2124。
  "T2122": CruiseId.T2122。
  "T2129": CruiseId.T2129
});

enum CruiseStatus { ACTIVE }

final cruiseStatusValues = EnumValues({
  "Active": CruiseStatus.ACTIVE
});

enum CruisingCategory { OCEAN }

final cruisingCategoryValues = EnumValues({
  "Ocean": CruisingCategory.OCEAN
});

enum PortCode { GBDVR, GBLIV, GBSOU, GBROY }

final portCodeValues = EnumValues({
  "GBDVR"/span>: PortCode.GBDVR。
  "GBLIV": PortCode.GBLIV。
  "GBROY": PortCode.GBROY。
  "GBSOU": 移植代碼.GBSOU
});

enum PortName { DOVER, LIVERPOOL, SOUTHAMPTON, ROSYTH_EDINBURGH }.

final portNameValues = EnumValues({
  "Dover"/span>: PortName.DOVER。
  "Liverpool": PortName.LIVERPOOL,
  "Rosyth(愛丁堡)": PortName.ROSYTH_EDINBURGH,
  "Southampton": PortName.SOUTHAMPTON
});

enum PortNameWithCountry { DOVER_ENGLAND, LIVERPOOL_ENGLAND, SOUTHAMPTON_ENGLAND, ROSYTH_EDINBURGH_SCOTLAND }

final portNameWithCountryValues = EnumValues({
  "Dover, England": PortNameWithCountry.DOVER_ENGLAND,
  "Liverpool, England": PortNameWithCountry.LIVERPOOL_ENGLAND,
  "Rosyth (Edinburgh), Scotland": PortNameWithCountry.ROSYTH_EDINBURGH_SCOTLAND,
  "Southampton, England": PortNameWithCountry.SOUTHAMPTON_ENGLAND
});

enum FareCode { F_F_1, EMPTY }

final fareCodeValues = EnumValues({
  ""/span>: FareCode.EMPTY。
  "F-F-1": FareCode.F_F_1
});

enum FareDescription { FREEDOM_FARE, EMPTY }.

final fareDescriptionValues = EnumValues({
  ""/span>: FareDescription.EMPTY。
  "自由票"。FareDescription.FREEDOM_FARE
});

enum FareTypeId { F, EMPTY }.

final fareTypeIdValues = EnumValues({
  ""/span>: FareTypeId.EMPTY。
  "F": FareTypeId.F
});

enum Name { SWEDISH_WATERWAYS_WITH_TASTE_OF_DENMARK, EXPLORING_THE_AZORES_AND_PORTUGAL, LANDSCAPES_OF_THE_CANARY_ISLANDS, BLACK_SEA_DISCOVERY_MEDITERRANEAN_ADVENTURE }

final nameValues = EnumValues({
  "Black Sea Discovery & Mediterranean Adventure": Name.BLACK_SEA_DISCOVERY_MEDITERRANEAN_ADVENTURE,
  "探索亞速爾群島和葡萄牙": Name.EXPLORING_THE_AZORES_AND_PORTUGAL,
  "加那利群島的景觀": Name.LANDSCAPES_OF_THE_CANARY_ISLANDS,
  "具有丹麥風味的瑞典水道": Name.SWEDISH_WATERWAYS_WITH_A_TASTE_OF_DENMARK
});

enum PortTerminal { CRUISE_TERMINAL_2, ACC_EXHIBITION_CENTRE, EMPTY }

final portTerminalValues = EnumValues({
  "ACC展覽中心"。PortTerminal.ACC_EXHIBITION_CENTRE,
  "2號郵輪碼頭": PortTerminal.CRUISE_TERMINAL_2,
  "": PortTerminal.EMPTY
});

enum ShipCode { BT, BS, BL }

final shipCodeValues = EnumValues({
  "BL"/span>: ShipCode.BL,
  "BS": ShipCode.BS,
  "BT": ShipCode.BT
});

enum ShipName { BOLETTE, BOREALIS, BALMORAL }.

final shipNameValues = EnumValues({
  "Balmoral": ShipName.BALMORAL,
  "Bolette": ShipName.BOLETTE,
  "Borealis": ShipName.BOREALIS
});

enum Theme { THE_12_X_FORMAL_EVENINGS, THE_13_X_FORMAL_EVENINGS, EMPTY }

final themeValues = EnumValues({
  ""/span>: Theme.EMPTY,
  "1. 2 x 正式的晚上": Theme.THE_12_X_FORMAL_EVENINGS,
  "1. 3 x 正式的晚上": Theme.THE_13_X_FORMAL_EVENINGS
});

class Oceans{
  海洋({
    this.number,
    this.status,
    this.type,
    this.point,
  });

  dynamic? number;
  動態的狀態。
  String?型別。
  int? points;

  factory Oceans.fromJson(Map<String, dynamic> json) => Oceans(
    number: json["Number"]。
    status: json["Status"]。
    type: json["Type"]。
    points: json["Points"]。
  );

  Map<String, dynamic> toJson()=> {
    "Number": 數字。
    "狀態": 狀態。
    "Type": 型別。
    "點數": 點數。
  };
}

class PastCruise{
  PastCruise({
    this.cruiseId,
    this.name,
    this.shortName,
    this. departureDate,
    this.returnDate。
    this.duration。
    this.shortDescription,
    this. departurePortCode,
    this. departurePortName,
    this. departurePortNameWithCountry,
    this.returnPortCode,
    this.returnPortName,
    this.returnPortNameWithCountry,
    this.shipCode,
    this.shipName,
    this.cruiseStatus,
    this.cruiseStatusApp,
    this.cruisingCategory,
    this.cruiseCancelledInfo,
    this.modifiedDate,
    this.isAddOnHoliday,
    this.bookingRef,
    this.agentName,
    this.guests,
  });

  String? cruiseId;
  String? name;
  String? shortName;
  DateTime? departureDate;
  DateTime? returnDate。
  int? duration;
  String? shortDescription;
  港口代碼? departurePortCode。
  PortName? departurePortName。
  PortNameWithCountry? departurePortNameWithCountry。
  PortCode? returnPortCode。
  PortName? returnPortName。
  PortNameWithCountry? returnPortNameWithCountry。
  String? shipCode。
  String? shipName;
  String? cruiseStatus。
  String? cruiseStatusApp;
  CruisingCategory? CruisingCategory。
  String? cruiseCancelledInfo;
  DateTime? modifiedDate。
  bool? isAddOnHoliday;
  String? bookingRef;
  String? agentName;
  String? guests;

  factory PastCruise.fromJson(Map<String, dynamic> json) => PastCruise(
    cruiseId: json["CruiseId"]。
    name: json["Name"]。
    shortName: json["ShortName"]。
    出發日期。DateTime.parse(json["DepartureDate"] )。
    returnDate。DateTime.parse(json["ReturnDate"]) 。
    duration: json["Duration"]。
    shortDescription: json["ShortDescription"]。
    departurePortCode: portCodeValues.map[json["DeparturePortCode"] ]。
    departurePortName: portNameValues.map[json["DeparturePortName"] ]。
    departurePortNameWithCountry: portNameWithCountryValues.map[json["DeparturePortNameWithCountry"] ]。
    returnPortCode: portCodeValues.map[json["ReturnPortCode"/span>]]。
    returnPortName: portNameValues.map[json["ReturnPortName"] ]。
    returnPortNameWithCountry: portNameWithCountryValues.map[json["ReturnPortNameWithCountry"] ]。
    shipCode: json["shipCode"]。
    shipName: json["ShipName"]。
    cruiseStatus: json["CruiseStatus"]。
    cruiseStatusApp: json["CruiseStatusApp"]。
    cruisingCategory: cruisingCategoryValues.map[json["CruisingCategory"] ]。
    cruiseCancelledInfo: json["CruiseCancelledInfo"]。
    modifiedDate。DateTime.parse(json["ModifiedDate"/span>])。
    isAddOnHoliday: json["IsAddOnHoliday"/span>]。
    bookingRef: json["BookingRef"]。
    agentName: json["AgentName"]。
    guests: json["Guests"]。
  );

  Map<String, dynamic> toJson()=> {
    "CruiseId": cruiseId,
    "Name": 名稱。
    "ShortName": 短名稱。
    "Duration": 持續時間。
    "ShortDescription": 短描述。
    "DeparturePortCode": portCodeValues.reverse[departurePortCode]。
    "DeparturePortName": portNameValues.reverse[departurePortName],
    "DeparturePortNameWithCountry": portNameWithCountryValues.reverse[ departurePortNameWithCountry]。
    "ReturnPortCode": portCodeValues.reverse[returnPortCode]。
    "ReturnPortName": portNameValues.reverse[returnPortName],
    "ReturnPortNameWithCountry"/span>: portNameWithCountryValues.reverse[returnPortNameWithCountry]。
    "shipCode": shipCode。
    "ShipName": shipName,
    "CruiseStatus": cruiseStatus,
    "CruiseStatusApp": cruiseStatusApp,
    "CruisingCategory": cruisingCategoryValues.reverse[cruisingCategory]。
    "CruiseCancelledInfo": cruiseCancelledInfo,
    "IsAddOnHoliday": isAddOnHoliday,
    "BookingRef": bookingRef,
    "AgentName": agentName,
    "Guests": guests。
  };
}

class EnumValues<T> {
  Map<String, T> map;
  Map<T, String> ? reverseMap;

  EnumValues(this.map)。

  Map<T, String> get reverse {
    if (reverseMap == null) {
      reverseMap = map.map((k, v) => new MapEntry(v, k))。
    }
    return reverseMap!
  }


轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/315673.html

標籤:

上一篇:在C中將char轉換為char*

下一篇:不要在flutter中顯示串列的前兩個元素

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more