我想決議過去巡航的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*

