import 'package:flutter/material.dart'; class RideOption { final int id; final String name; final double price; final double duration; final Color borderColor; final int seats; final DateTime timestmp; final String? couponcode; final double? couponvalue; final double? couponpercentage; final bool? iskidsride; RideOption({ required this.id, required this.name, required this.price, required this.duration, required this.borderColor, required this.seats, required this.timestmp, this.couponcode, this.couponvalue, this.couponpercentage, this.iskidsride, }); factory RideOption.fromJson(Map json) { // Example API values for 'bordercolor' might be: // "#FF4CAF50" // "FF4CAF50" // "4CAF50" // "0xFF4CAF50" // null String rawHex = (json['bordercolor'] as String?) ?? ''; // 1) Remove leading '#' if present if (rawHex.startsWith('#')) { rawHex = rawHex.substring(1); } late int hexInt; try { if (rawHex.startsWith('0x')) { // already in 0xAARRGGBB form hexInt = int.parse(rawHex); } else { // no "0x" prefix: parse as hexadecimal // if only 6 digits (RRGGBB), prepend "FF" for full opacity if (rawHex.length == 6) { rawHex = 'FF' + rawHex; } hexInt = int.parse(rawHex, radix: 16); } } catch (_) { // fallback to a default color if parsing fails hexInt = 0xFF4CAF50; // defaulting to a green shade } return RideOption( id: json['id'] as int, name: json['name'] as String, price: (json['price'] as num).toDouble(), duration: (json['duration'] as num).toDouble(), borderColor: Color(hexInt), seats: json['seats'] as int, iskidsride: json['iskidsride'] ?? false, couponcode: json['couponcode'], couponvalue: json['couponvalue']??0.0, couponpercentage: json['couponpercentage']??0.0, timestmp: DateTime.fromMillisecondsSinceEpoch(json['timestmp'] as int), ); } Map toJson() { // Always write out in "0xAARRGGBB" form final hexString = '0x${borderColor.value.toRadixString(16).padLeft(8, '0').toUpperCase()}'; return { 'id': id, 'name': name, 'price': price, 'duration': duration, 'bordercolor': hexString, 'seats': seats, 'iskidsride': iskidsride, 'timestmp': timestmp.millisecondsSinceEpoch, }; } }