From 14fcdb54db0a41183b904a2e03efc49149d86cd3 Mon Sep 17 00:00:00 2001 From: Ankit Mahato Date: Wed, 26 Apr 2023 16:17:23 +0530 Subject: [PATCH] Settings Model --- lib/models/models.dart | 1 + lib/models/settings_model.dart | 66 ++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 lib/models/settings_model.dart diff --git a/lib/models/models.dart b/lib/models/models.dart index 6d837b0f..af82af6f 100644 --- a/lib/models/models.dart +++ b/lib/models/models.dart @@ -1,3 +1,4 @@ export 'kvrow_model.dart'; export 'request_model.dart'; export 'response_model.dart'; +export 'settings_model.dart'; diff --git a/lib/models/settings_model.dart b/lib/models/settings_model.dart new file mode 100644 index 00000000..6cfe1ab1 --- /dev/null +++ b/lib/models/settings_model.dart @@ -0,0 +1,66 @@ +import 'package:flutter/material.dart'; +import 'package:apidash/consts.dart'; + +@immutable +class SettingsModel { + const SettingsModel( + {this.isDark = false, + this.size, + this.defaultUriScheme = kDefaultUriScheme, + this.saveResponses = true}); + + final bool isDark; + final Size? size; + final String defaultUriScheme; + final bool saveResponses; + + SettingsModel copyWith({ + bool? isDark, + Size? size, + String? defaultUriScheme, + bool? saveResponses, + }) { + return SettingsModel( + isDark: isDark ?? this.isDark, + size: size ?? this.size, + defaultUriScheme: defaultUriScheme ?? this.defaultUriScheme, + saveResponses: saveResponses ?? this.saveResponses, + ); + } + + factory SettingsModel.fromJson(Map data) { + final isDark = data["isDark"] as bool?; + final width = data["width"] as double?; + final height = data["height"] as double?; + Size? size; + if (width != null && height != null) { + size = Size(width, height); + } + final defaultUriScheme = data["defaultUriScheme"] as String?; + final saveResponses = data["saveResponses"] as bool?; + + const sm = SettingsModel(); + + return sm.copyWith( + isDark: isDark, + size: size, + defaultUriScheme: defaultUriScheme, + saveResponses: saveResponses, + ); + } + + Map toJson() { + return { + "isDark": isDark, + "width": size?.width, + "height": size?.height, + "defaultUriScheme": defaultUriScheme, + "saveResponses": saveResponses, + }; + } + + @override + String toString() { + return toJson().toString(); + } +}