import 'dart:convert'; import 'package:flutter/foundation.dart'; class ShippingRate { String name; double price; List rates; ShippingRate.fromJson(Map json) : name = json['name'], price = double.parse(json['price'].toString()), rates = (json['rates'] as List).map((e) => Rate.fromJson(e)).toList(); Map toJson() => { 'name': name, 'price': price, 'rates': rates, }; @override bool operator ==(Object other) => identical(this, other) || other is ShippingRate && runtimeType == other.runtimeType && name == other.name && price.toStringAsFixed(2) == other.price.toStringAsFixed(2) && listEquals(rates, other.rates); @override String toString() { return json.encode(this); } @override int get hashCode => name.hashCode ^ price.hashCode ^ rates.hashCode; } class Rate { String name; double rate; Rate.fromJson(Map json) : name = json['name'], rate = double.parse(json['rate'].toString()); Map toJson() => { 'name': name, 'rate': rate, }; @override bool operator ==(Object other) => identical(this, other) || other is Rate && runtimeType == other.runtimeType && name == other.name && rate.toStringAsFixed(2) == other.rate.toStringAsFixed(2); @override String toString() { return json.encode(this); } @override int get hashCode => name.hashCode ^ rate.hashCode; }