From 59ac27f0695e209ac3fd5c4d9a46c0593801ec55 Mon Sep 17 00:00:00 2001 From: Muhammad Hamza Date: Mon, 30 Sep 2024 08:44:26 +0500 Subject: [PATCH] loading data from dart.json and dart model for better DX --- build.yaml | 19 ++ data.json | 156 +++++++++++++ lib/models/about.dart | 16 ++ lib/models/about.freezed.dart | 216 ++++++++++++++++++ lib/models/about.g.dart | 22 ++ lib/models/basic.dart | 20 ++ lib/models/basic.freezed.dart | 314 ++++++++++++++++++++++++++ lib/models/basic.g.dart | 31 +++ lib/models/contact.dart | 17 ++ lib/models/contact.freezed.dart | 218 ++++++++++++++++++ lib/models/contact.g.dart | 23 ++ lib/models/data.dart | 24 ++ lib/models/data.freezed.dart | 325 +++++++++++++++++++++++++++ lib/models/data.g.dart | 34 +++ lib/models/project.dart | 18 ++ lib/models/project.freezed.dart | 246 ++++++++++++++++++++ lib/models/project.g.dart | 25 +++ lib/models/service_data.dart | 15 ++ lib/models/service_data.freezed.dart | 182 +++++++++++++++ lib/models/service_data.g.dart | 19 ++ lib/models/social.dart | 14 ++ lib/models/social.freezed.dart | 177 +++++++++++++++ lib/models/social.g.dart | 18 ++ lib/models/work.dart | 15 ++ lib/models/work.freezed.dart | 195 ++++++++++++++++ lib/models/work.g.dart | 20 ++ pubspec.yaml | 5 + 27 files changed, 2384 insertions(+) create mode 100644 build.yaml create mode 100644 data.json create mode 100644 lib/models/about.dart create mode 100644 lib/models/about.freezed.dart create mode 100644 lib/models/about.g.dart create mode 100644 lib/models/basic.dart create mode 100644 lib/models/basic.freezed.dart create mode 100644 lib/models/basic.g.dart create mode 100644 lib/models/contact.dart create mode 100644 lib/models/contact.freezed.dart create mode 100644 lib/models/contact.g.dart create mode 100644 lib/models/data.dart create mode 100644 lib/models/data.freezed.dart create mode 100644 lib/models/data.g.dart create mode 100644 lib/models/project.dart create mode 100644 lib/models/project.freezed.dart create mode 100644 lib/models/project.g.dart create mode 100644 lib/models/service_data.dart create mode 100644 lib/models/service_data.freezed.dart create mode 100644 lib/models/service_data.g.dart create mode 100644 lib/models/social.dart create mode 100644 lib/models/social.freezed.dart create mode 100644 lib/models/social.g.dart create mode 100644 lib/models/work.dart create mode 100644 lib/models/work.freezed.dart create mode 100644 lib/models/work.g.dart diff --git a/build.yaml b/build.yaml new file mode 100644 index 0000000..fb7cef6 --- /dev/null +++ b/build.yaml @@ -0,0 +1,19 @@ +targets: + $default: + builders: + json_serializable: + options: + # The default value for each is listed. + any_map: false + checked: false + constructor: "" + create_factory: true + create_field_map: false + create_per_field_to_json: false + create_to_json: true + disallow_unrecognized_keys: false + explicit_to_json: true + field_rename: none + generic_argument_factories: false + ignore_unannotated: false + include_if_null: true \ No newline at end of file diff --git a/data.json b/data.json new file mode 100644 index 0000000..433431c --- /dev/null +++ b/data.json @@ -0,0 +1,156 @@ +{ + "basic": { + "firstName": "Muhammad", + "lastName": "Hamza", + "age": 22, + "email": "hamza.6.shakeel@gmail.com", + "phone": "+92 346 0159889", + "address": "Islamabad, PK", + "photos": [ + "images/photos/bw.png", + "images/photos/colored.png", + "images/photos/mobile.png" + ], + "resume": "https://drive.google.com/drive/u/0/folders/1E6NxJlmnW2lTYTszcbODdpXiPFYe_kBM" + }, + "socials": [ + { + "icon": "fa-brands fa-square-facebook", + "url": "https://www.facebook.com/mhmzdev" + }, + { + "icon": "fa-brands fa-linkedin", + "url": "https://www.linkedin.com/in/mhmzdev/" + }, + { + "icon": "fa-brands fa-github", + "url": "https://github.com/mhmzdev" + }, + { + "icon": "fa-brands fa-x-twitter", + "url": "https://twitter.com/mhmzdev" + }, + { + "icon": "fa-brands fa-instagram", + "url": "https://www.instagram.com/mhmzdev/" + }, + { + "icon": "fa-brands fa-medium", + "url": "https://mhmzdev.medium.com" + } + ], + "aboutMe": { + "description": "I'm a fresh graduate with Computer Science as Majors from COMSATS University Islamabad. I have been working with Flutter for the past 2 years and have developed multiple applications for both Android and iOS platforms. I have a keen interest in UI/UX designing and have been working on it for the past 3 years. I have also been writing technical blogs for the past 2 years and have been a part of multiple technical writing communities.", + "tech": [ + "Flutter", + "Dart", + "Firebase", + "Python", + "dart_frog", + "jaspr", + "nodejs", + "express" + ], + "works": [ + { + "image": "images/work/cui.png", + "url": "https://www.comsats.edu.pk/", + "height": 50 + }, + { + "image": "images/work/dsc.png", + "url": "https://developers.google.com/community/dsc", + "height": 30 + }, + { + "image": "images/work/flutterisl.png", + "url": "https://meetup.com/flutter-islamabad", + "height": 60 + }, + { + "image": "images/work/st.png", + "url": "https://www.sastaticket.pk/", + "height": 60 + } + ] + }, + "services": [ + { + "icon": "images/services/mobile.png", + "title": "Mobile Development" + }, + { + "icon": "images/services/ui.png", + "title": "UI/UX Design" + }, + { + "icon": "images/services/rapid.png", + "title": "Rapid Prototyping" + }, + { + "icon": "images/services/blog.png", + "title": "Technical Writing" + }, + { + "icon": "images/services/open.png", + "title": "Open Source - GitHub" + } + ], + "projects": [ + { + "banner": "images/projects/snackbar.png", + "icon": "images/projects/flutter.png", + "title": "Awesome Snackbar", + "description": "A very unique dart package to uplift the snackbar experience in flutter. Available at pub.dev now!", + "link": "https://pub.dev/packages/awesome_snackbar" + }, + { + "banner": "images/projects/quranB.png", + "icon": "images/projects/quran.png", + "title": "Quran App", + "description": "Application of Holy book of Muslims, Al-Qur'an. Developed using Flutter. Powered with live RestAPI given in README.md", + "link": "https://github.com/mhmzdev/the-holy-quran-app" + }, + { + "banner": "images/projects/medkitB.png", + "icon": "images/projects/medkit.png", + "title": "MedKit", + "description": "A Phramacy app developed using Flutter powered with Firebase as database with Doctor and Patient panels.", + "link": "https://github.com/mhmzdev/MedKit-Pharmacy-App-Using-Flutter" + }, + { + "banner": "images/projects/hereiamB.png", + "icon": "images/projects/hereiam.png", + "title": "Here I Am", + "description": "Here I am is an Alert app that Sends alert SMS holding your location (Address and Google Maps) to your loved ones.", + "link": "https://github.com/mhmzdev/Here-I-Am-Alert-App" + }, + { + "banner": "images/projects/covidB.png", + "icon": "images/projects/covid.png", + "title": "Covid-19 Tracker", + "description": "A live trakcer for COVID19 stats across the Globe and my Home country Pakistan. It uses APIs so the data is live.", + "link": "https://github.com/mhmzdev/Covid19-Tracker-App" + } + ], + "contact": [ + { + "icon": "fa-duotone fa-solid fa-house", + "title": "Location", + "description": "Islamabad, PK", + "action": "https://maps.app.goo.gl/ek2SSNh26K1i4HNF6" + }, + { + "icon": "fa-duotone fa-solid fa-phone", + "title": "Phone", + "description": "+92 346 0159889", + "action": "https://wa.me/923460159889" + }, + { + "icon": "fa-duotone fa-solid fa-envelope", + "title": "Email", + "description": "hamza.6.shakeel@gmail.com", + "action": "mailto:hamza.6.shakeel@gmail.com" + } + ] +} \ No newline at end of file diff --git a/lib/models/about.dart b/lib/models/about.dart new file mode 100644 index 0000000..2c6e98a --- /dev/null +++ b/lib/models/about.dart @@ -0,0 +1,16 @@ +import 'package:devfolio/models/work.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'about.freezed.dart'; +part 'about.g.dart'; + +@freezed +class About with _$About { + const factory About({ + required String description, + required List tech, + required List works, + }) = _About; + + factory About.fromJson(Map json) => _$AboutFromJson(json); +} diff --git a/lib/models/about.freezed.dart b/lib/models/about.freezed.dart new file mode 100644 index 0000000..3e5f9b4 --- /dev/null +++ b/lib/models/about.freezed.dart @@ -0,0 +1,216 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'about.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models'); + +About _$AboutFromJson(Map json) { + return _About.fromJson(json); +} + +/// @nodoc +mixin _$About { + String get description => throw _privateConstructorUsedError; + List get tech => throw _privateConstructorUsedError; + List get works => throw _privateConstructorUsedError; + + /// Serializes this About to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of About + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $AboutCopyWith get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $AboutCopyWith<$Res> { + factory $AboutCopyWith(About value, $Res Function(About) then) = + _$AboutCopyWithImpl<$Res, About>; + @useResult + $Res call({String description, List tech, List works}); +} + +/// @nodoc +class _$AboutCopyWithImpl<$Res, $Val extends About> + implements $AboutCopyWith<$Res> { + _$AboutCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of About + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? description = null, + Object? tech = null, + Object? works = null, + }) { + return _then(_value.copyWith( + description: null == description + ? _value.description + : description // ignore: cast_nullable_to_non_nullable + as String, + tech: null == tech + ? _value.tech + : tech // ignore: cast_nullable_to_non_nullable + as List, + works: null == works + ? _value.works + : works // ignore: cast_nullable_to_non_nullable + as List, + ) as $Val); + } +} + +/// @nodoc +abstract class _$$AboutImplCopyWith<$Res> implements $AboutCopyWith<$Res> { + factory _$$AboutImplCopyWith( + _$AboutImpl value, $Res Function(_$AboutImpl) then) = + __$$AboutImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({String description, List tech, List works}); +} + +/// @nodoc +class __$$AboutImplCopyWithImpl<$Res> + extends _$AboutCopyWithImpl<$Res, _$AboutImpl> + implements _$$AboutImplCopyWith<$Res> { + __$$AboutImplCopyWithImpl( + _$AboutImpl _value, $Res Function(_$AboutImpl) _then) + : super(_value, _then); + + /// Create a copy of About + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? description = null, + Object? tech = null, + Object? works = null, + }) { + return _then(_$AboutImpl( + description: null == description + ? _value.description + : description // ignore: cast_nullable_to_non_nullable + as String, + tech: null == tech + ? _value._tech + : tech // ignore: cast_nullable_to_non_nullable + as List, + works: null == works + ? _value._works + : works // ignore: cast_nullable_to_non_nullable + as List, + )); + } +} + +/// @nodoc +@JsonSerializable() +class _$AboutImpl implements _About { + const _$AboutImpl( + {required this.description, + required final List tech, + required final List works}) + : _tech = tech, + _works = works; + + factory _$AboutImpl.fromJson(Map json) => + _$$AboutImplFromJson(json); + + @override + final String description; + final List _tech; + @override + List get tech { + if (_tech is EqualUnmodifiableListView) return _tech; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_tech); + } + + final List _works; + @override + List get works { + if (_works is EqualUnmodifiableListView) return _works; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_works); + } + + @override + String toString() { + return 'About(description: $description, tech: $tech, works: $works)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$AboutImpl && + (identical(other.description, description) || + other.description == description) && + const DeepCollectionEquality().equals(other._tech, _tech) && + const DeepCollectionEquality().equals(other._works, _works)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + description, + const DeepCollectionEquality().hash(_tech), + const DeepCollectionEquality().hash(_works)); + + /// Create a copy of About + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$AboutImplCopyWith<_$AboutImpl> get copyWith => + __$$AboutImplCopyWithImpl<_$AboutImpl>(this, _$identity); + + @override + Map toJson() { + return _$$AboutImplToJson( + this, + ); + } +} + +abstract class _About implements About { + const factory _About( + {required final String description, + required final List tech, + required final List works}) = _$AboutImpl; + + factory _About.fromJson(Map json) = _$AboutImpl.fromJson; + + @override + String get description; + @override + List get tech; + @override + List get works; + + /// Create a copy of About + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$AboutImplCopyWith<_$AboutImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/models/about.g.dart b/lib/models/about.g.dart new file mode 100644 index 0000000..5af466d --- /dev/null +++ b/lib/models/about.g.dart @@ -0,0 +1,22 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'about.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +_$AboutImpl _$$AboutImplFromJson(Map json) => _$AboutImpl( + description: json['description'] as String, + tech: (json['tech'] as List).map((e) => e as String).toList(), + works: (json['works'] as List) + .map((e) => Work.fromJson(e as Map)) + .toList(), + ); + +Map _$$AboutImplToJson(_$AboutImpl instance) => + { + 'description': instance.description, + 'tech': instance.tech, + 'works': instance.works.map((e) => e.toJson()).toList(), + }; diff --git a/lib/models/basic.dart b/lib/models/basic.dart new file mode 100644 index 0000000..a8e1fb4 --- /dev/null +++ b/lib/models/basic.dart @@ -0,0 +1,20 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'basic.freezed.dart'; +part 'basic.g.dart'; + +@freezed +class Basic with _$Basic { + const factory Basic({ + required String firstName, + required String lastName, + required int age, + required String email, + required String phone, + required String address, + required List photos, + required String resume, + }) = _Basic; + + factory Basic.fromJson(Map json) => _$BasicFromJson(json); +} diff --git a/lib/models/basic.freezed.dart b/lib/models/basic.freezed.dart new file mode 100644 index 0000000..54f1f2c --- /dev/null +++ b/lib/models/basic.freezed.dart @@ -0,0 +1,314 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'basic.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models'); + +Basic _$BasicFromJson(Map json) { + return _Basic.fromJson(json); +} + +/// @nodoc +mixin _$Basic { + String get firstName => throw _privateConstructorUsedError; + String get lastName => throw _privateConstructorUsedError; + int get age => throw _privateConstructorUsedError; + String get email => throw _privateConstructorUsedError; + String get phone => throw _privateConstructorUsedError; + String get address => throw _privateConstructorUsedError; + List get photos => throw _privateConstructorUsedError; + String get resume => throw _privateConstructorUsedError; + + /// Serializes this Basic to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of Basic + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $BasicCopyWith get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $BasicCopyWith<$Res> { + factory $BasicCopyWith(Basic value, $Res Function(Basic) then) = + _$BasicCopyWithImpl<$Res, Basic>; + @useResult + $Res call( + {String firstName, + String lastName, + int age, + String email, + String phone, + String address, + List photos, + String resume}); +} + +/// @nodoc +class _$BasicCopyWithImpl<$Res, $Val extends Basic> + implements $BasicCopyWith<$Res> { + _$BasicCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of Basic + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? firstName = null, + Object? lastName = null, + Object? age = null, + Object? email = null, + Object? phone = null, + Object? address = null, + Object? photos = null, + Object? resume = null, + }) { + return _then(_value.copyWith( + firstName: null == firstName + ? _value.firstName + : firstName // ignore: cast_nullable_to_non_nullable + as String, + lastName: null == lastName + ? _value.lastName + : lastName // ignore: cast_nullable_to_non_nullable + as String, + age: null == age + ? _value.age + : age // ignore: cast_nullable_to_non_nullable + as int, + email: null == email + ? _value.email + : email // ignore: cast_nullable_to_non_nullable + as String, + phone: null == phone + ? _value.phone + : phone // ignore: cast_nullable_to_non_nullable + as String, + address: null == address + ? _value.address + : address // ignore: cast_nullable_to_non_nullable + as String, + photos: null == photos + ? _value.photos + : photos // ignore: cast_nullable_to_non_nullable + as List, + resume: null == resume + ? _value.resume + : resume // ignore: cast_nullable_to_non_nullable + as String, + ) as $Val); + } +} + +/// @nodoc +abstract class _$$BasicImplCopyWith<$Res> implements $BasicCopyWith<$Res> { + factory _$$BasicImplCopyWith( + _$BasicImpl value, $Res Function(_$BasicImpl) then) = + __$$BasicImplCopyWithImpl<$Res>; + @override + @useResult + $Res call( + {String firstName, + String lastName, + int age, + String email, + String phone, + String address, + List photos, + String resume}); +} + +/// @nodoc +class __$$BasicImplCopyWithImpl<$Res> + extends _$BasicCopyWithImpl<$Res, _$BasicImpl> + implements _$$BasicImplCopyWith<$Res> { + __$$BasicImplCopyWithImpl( + _$BasicImpl _value, $Res Function(_$BasicImpl) _then) + : super(_value, _then); + + /// Create a copy of Basic + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? firstName = null, + Object? lastName = null, + Object? age = null, + Object? email = null, + Object? phone = null, + Object? address = null, + Object? photos = null, + Object? resume = null, + }) { + return _then(_$BasicImpl( + firstName: null == firstName + ? _value.firstName + : firstName // ignore: cast_nullable_to_non_nullable + as String, + lastName: null == lastName + ? _value.lastName + : lastName // ignore: cast_nullable_to_non_nullable + as String, + age: null == age + ? _value.age + : age // ignore: cast_nullable_to_non_nullable + as int, + email: null == email + ? _value.email + : email // ignore: cast_nullable_to_non_nullable + as String, + phone: null == phone + ? _value.phone + : phone // ignore: cast_nullable_to_non_nullable + as String, + address: null == address + ? _value.address + : address // ignore: cast_nullable_to_non_nullable + as String, + photos: null == photos + ? _value._photos + : photos // ignore: cast_nullable_to_non_nullable + as List, + resume: null == resume + ? _value.resume + : resume // ignore: cast_nullable_to_non_nullable + as String, + )); + } +} + +/// @nodoc +@JsonSerializable() +class _$BasicImpl implements _Basic { + const _$BasicImpl( + {required this.firstName, + required this.lastName, + required this.age, + required this.email, + required this.phone, + required this.address, + required final List photos, + required this.resume}) + : _photos = photos; + + factory _$BasicImpl.fromJson(Map json) => + _$$BasicImplFromJson(json); + + @override + final String firstName; + @override + final String lastName; + @override + final int age; + @override + final String email; + @override + final String phone; + @override + final String address; + final List _photos; + @override + List get photos { + if (_photos is EqualUnmodifiableListView) return _photos; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_photos); + } + + @override + final String resume; + + @override + String toString() { + return 'Basic(firstName: $firstName, lastName: $lastName, age: $age, email: $email, phone: $phone, address: $address, photos: $photos, resume: $resume)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$BasicImpl && + (identical(other.firstName, firstName) || + other.firstName == firstName) && + (identical(other.lastName, lastName) || + other.lastName == lastName) && + (identical(other.age, age) || other.age == age) && + (identical(other.email, email) || other.email == email) && + (identical(other.phone, phone) || other.phone == phone) && + (identical(other.address, address) || other.address == address) && + const DeepCollectionEquality().equals(other._photos, _photos) && + (identical(other.resume, resume) || other.resume == resume)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash(runtimeType, firstName, lastName, age, email, + phone, address, const DeepCollectionEquality().hash(_photos), resume); + + /// Create a copy of Basic + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$BasicImplCopyWith<_$BasicImpl> get copyWith => + __$$BasicImplCopyWithImpl<_$BasicImpl>(this, _$identity); + + @override + Map toJson() { + return _$$BasicImplToJson( + this, + ); + } +} + +abstract class _Basic implements Basic { + const factory _Basic( + {required final String firstName, + required final String lastName, + required final int age, + required final String email, + required final String phone, + required final String address, + required final List photos, + required final String resume}) = _$BasicImpl; + + factory _Basic.fromJson(Map json) = _$BasicImpl.fromJson; + + @override + String get firstName; + @override + String get lastName; + @override + int get age; + @override + String get email; + @override + String get phone; + @override + String get address; + @override + List get photos; + @override + String get resume; + + /// Create a copy of Basic + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$BasicImplCopyWith<_$BasicImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/models/basic.g.dart b/lib/models/basic.g.dart new file mode 100644 index 0000000..8f644f1 --- /dev/null +++ b/lib/models/basic.g.dart @@ -0,0 +1,31 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'basic.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +_$BasicImpl _$$BasicImplFromJson(Map json) => _$BasicImpl( + firstName: json['firstName'] as String, + lastName: json['lastName'] as String, + age: (json['age'] as num).toInt(), + email: json['email'] as String, + phone: json['phone'] as String, + address: json['address'] as String, + photos: + (json['photos'] as List).map((e) => e as String).toList(), + resume: json['resume'] as String, + ); + +Map _$$BasicImplToJson(_$BasicImpl instance) => + { + 'firstName': instance.firstName, + 'lastName': instance.lastName, + 'age': instance.age, + 'email': instance.email, + 'phone': instance.phone, + 'address': instance.address, + 'photos': instance.photos, + 'resume': instance.resume, + }; diff --git a/lib/models/contact.dart b/lib/models/contact.dart new file mode 100644 index 0000000..db37a21 --- /dev/null +++ b/lib/models/contact.dart @@ -0,0 +1,17 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'contact.freezed.dart'; +part 'contact.g.dart'; + +@freezed +class Contact with _$Contact { + const factory Contact({ + required String icon, + required String title, + required String description, + required String action, + }) = _Contact; + + factory Contact.fromJson(Map json) => + _$ContactFromJson(json); +} diff --git a/lib/models/contact.freezed.dart b/lib/models/contact.freezed.dart new file mode 100644 index 0000000..44505b9 --- /dev/null +++ b/lib/models/contact.freezed.dart @@ -0,0 +1,218 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'contact.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models'); + +Contact _$ContactFromJson(Map json) { + return _Contact.fromJson(json); +} + +/// @nodoc +mixin _$Contact { + String get icon => throw _privateConstructorUsedError; + String get title => throw _privateConstructorUsedError; + String get description => throw _privateConstructorUsedError; + String get action => throw _privateConstructorUsedError; + + /// Serializes this Contact to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of Contact + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $ContactCopyWith get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $ContactCopyWith<$Res> { + factory $ContactCopyWith(Contact value, $Res Function(Contact) then) = + _$ContactCopyWithImpl<$Res, Contact>; + @useResult + $Res call({String icon, String title, String description, String action}); +} + +/// @nodoc +class _$ContactCopyWithImpl<$Res, $Val extends Contact> + implements $ContactCopyWith<$Res> { + _$ContactCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of Contact + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? icon = null, + Object? title = null, + Object? description = null, + Object? action = null, + }) { + return _then(_value.copyWith( + icon: null == icon + ? _value.icon + : icon // ignore: cast_nullable_to_non_nullable + as String, + title: null == title + ? _value.title + : title // ignore: cast_nullable_to_non_nullable + as String, + description: null == description + ? _value.description + : description // ignore: cast_nullable_to_non_nullable + as String, + action: null == action + ? _value.action + : action // ignore: cast_nullable_to_non_nullable + as String, + ) as $Val); + } +} + +/// @nodoc +abstract class _$$ContactImplCopyWith<$Res> implements $ContactCopyWith<$Res> { + factory _$$ContactImplCopyWith( + _$ContactImpl value, $Res Function(_$ContactImpl) then) = + __$$ContactImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({String icon, String title, String description, String action}); +} + +/// @nodoc +class __$$ContactImplCopyWithImpl<$Res> + extends _$ContactCopyWithImpl<$Res, _$ContactImpl> + implements _$$ContactImplCopyWith<$Res> { + __$$ContactImplCopyWithImpl( + _$ContactImpl _value, $Res Function(_$ContactImpl) _then) + : super(_value, _then); + + /// Create a copy of Contact + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? icon = null, + Object? title = null, + Object? description = null, + Object? action = null, + }) { + return _then(_$ContactImpl( + icon: null == icon + ? _value.icon + : icon // ignore: cast_nullable_to_non_nullable + as String, + title: null == title + ? _value.title + : title // ignore: cast_nullable_to_non_nullable + as String, + description: null == description + ? _value.description + : description // ignore: cast_nullable_to_non_nullable + as String, + action: null == action + ? _value.action + : action // ignore: cast_nullable_to_non_nullable + as String, + )); + } +} + +/// @nodoc +@JsonSerializable() +class _$ContactImpl implements _Contact { + const _$ContactImpl( + {required this.icon, + required this.title, + required this.description, + required this.action}); + + factory _$ContactImpl.fromJson(Map json) => + _$$ContactImplFromJson(json); + + @override + final String icon; + @override + final String title; + @override + final String description; + @override + final String action; + + @override + String toString() { + return 'Contact(icon: $icon, title: $title, description: $description, action: $action)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ContactImpl && + (identical(other.icon, icon) || other.icon == icon) && + (identical(other.title, title) || other.title == title) && + (identical(other.description, description) || + other.description == description) && + (identical(other.action, action) || other.action == action)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => + Object.hash(runtimeType, icon, title, description, action); + + /// Create a copy of Contact + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ContactImplCopyWith<_$ContactImpl> get copyWith => + __$$ContactImplCopyWithImpl<_$ContactImpl>(this, _$identity); + + @override + Map toJson() { + return _$$ContactImplToJson( + this, + ); + } +} + +abstract class _Contact implements Contact { + const factory _Contact( + {required final String icon, + required final String title, + required final String description, + required final String action}) = _$ContactImpl; + + factory _Contact.fromJson(Map json) = _$ContactImpl.fromJson; + + @override + String get icon; + @override + String get title; + @override + String get description; + @override + String get action; + + /// Create a copy of Contact + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ContactImplCopyWith<_$ContactImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/models/contact.g.dart b/lib/models/contact.g.dart new file mode 100644 index 0000000..bfa7f3d --- /dev/null +++ b/lib/models/contact.g.dart @@ -0,0 +1,23 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'contact.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +_$ContactImpl _$$ContactImplFromJson(Map json) => + _$ContactImpl( + icon: json['icon'] as String, + title: json['title'] as String, + description: json['description'] as String, + action: json['action'] as String, + ); + +Map _$$ContactImplToJson(_$ContactImpl instance) => + { + 'icon': instance.icon, + 'title': instance.title, + 'description': instance.description, + 'action': instance.action, + }; diff --git a/lib/models/data.dart b/lib/models/data.dart new file mode 100644 index 0000000..2bf8c0f --- /dev/null +++ b/lib/models/data.dart @@ -0,0 +1,24 @@ +import 'package:devfolio/models/about.dart'; +import 'package:devfolio/models/basic.dart'; +import 'package:devfolio/models/contact.dart'; +import 'package:devfolio/models/project.dart'; +import 'package:devfolio/models/service_data.dart'; +import 'package:devfolio/models/social.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'data.freezed.dart'; +part 'data.g.dart'; + +@freezed +class Data with _$Data { + const factory Data({ + required Basic basic, + required List socials, + required About about, + required List services, + required List projects, + required List contact, + }) = _Data; + + factory Data.fromJson(Map json) => _$DataFromJson(json); +} diff --git a/lib/models/data.freezed.dart b/lib/models/data.freezed.dart new file mode 100644 index 0000000..eff836a --- /dev/null +++ b/lib/models/data.freezed.dart @@ -0,0 +1,325 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'data.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models'); + +Data _$DataFromJson(Map json) { + return _Data.fromJson(json); +} + +/// @nodoc +mixin _$Data { + Basic get basic => throw _privateConstructorUsedError; + List get socials => throw _privateConstructorUsedError; + About get about => throw _privateConstructorUsedError; + List get services => throw _privateConstructorUsedError; + List get projects => throw _privateConstructorUsedError; + List get contact => throw _privateConstructorUsedError; + + /// Serializes this Data to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of Data + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $DataCopyWith get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $DataCopyWith<$Res> { + factory $DataCopyWith(Data value, $Res Function(Data) then) = + _$DataCopyWithImpl<$Res, Data>; + @useResult + $Res call( + {Basic basic, + List socials, + About about, + List services, + List projects, + List contact}); + + $BasicCopyWith<$Res> get basic; + $AboutCopyWith<$Res> get about; +} + +/// @nodoc +class _$DataCopyWithImpl<$Res, $Val extends Data> + implements $DataCopyWith<$Res> { + _$DataCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of Data + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? basic = null, + Object? socials = null, + Object? about = null, + Object? services = null, + Object? projects = null, + Object? contact = null, + }) { + return _then(_value.copyWith( + basic: null == basic + ? _value.basic + : basic // ignore: cast_nullable_to_non_nullable + as Basic, + socials: null == socials + ? _value.socials + : socials // ignore: cast_nullable_to_non_nullable + as List, + about: null == about + ? _value.about + : about // ignore: cast_nullable_to_non_nullable + as About, + services: null == services + ? _value.services + : services // ignore: cast_nullable_to_non_nullable + as List, + projects: null == projects + ? _value.projects + : projects // ignore: cast_nullable_to_non_nullable + as List, + contact: null == contact + ? _value.contact + : contact // ignore: cast_nullable_to_non_nullable + as List, + ) as $Val); + } + + /// Create a copy of Data + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $BasicCopyWith<$Res> get basic { + return $BasicCopyWith<$Res>(_value.basic, (value) { + return _then(_value.copyWith(basic: value) as $Val); + }); + } + + /// Create a copy of Data + /// with the given fields replaced by the non-null parameter values. + @override + @pragma('vm:prefer-inline') + $AboutCopyWith<$Res> get about { + return $AboutCopyWith<$Res>(_value.about, (value) { + return _then(_value.copyWith(about: value) as $Val); + }); + } +} + +/// @nodoc +abstract class _$$DataImplCopyWith<$Res> implements $DataCopyWith<$Res> { + factory _$$DataImplCopyWith( + _$DataImpl value, $Res Function(_$DataImpl) then) = + __$$DataImplCopyWithImpl<$Res>; + @override + @useResult + $Res call( + {Basic basic, + List socials, + About about, + List services, + List projects, + List contact}); + + @override + $BasicCopyWith<$Res> get basic; + @override + $AboutCopyWith<$Res> get about; +} + +/// @nodoc +class __$$DataImplCopyWithImpl<$Res> + extends _$DataCopyWithImpl<$Res, _$DataImpl> + implements _$$DataImplCopyWith<$Res> { + __$$DataImplCopyWithImpl(_$DataImpl _value, $Res Function(_$DataImpl) _then) + : super(_value, _then); + + /// Create a copy of Data + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? basic = null, + Object? socials = null, + Object? about = null, + Object? services = null, + Object? projects = null, + Object? contact = null, + }) { + return _then(_$DataImpl( + basic: null == basic + ? _value.basic + : basic // ignore: cast_nullable_to_non_nullable + as Basic, + socials: null == socials + ? _value._socials + : socials // ignore: cast_nullable_to_non_nullable + as List, + about: null == about + ? _value.about + : about // ignore: cast_nullable_to_non_nullable + as About, + services: null == services + ? _value._services + : services // ignore: cast_nullable_to_non_nullable + as List, + projects: null == projects + ? _value._projects + : projects // ignore: cast_nullable_to_non_nullable + as List, + contact: null == contact + ? _value._contact + : contact // ignore: cast_nullable_to_non_nullable + as List, + )); + } +} + +/// @nodoc +@JsonSerializable() +class _$DataImpl implements _Data { + const _$DataImpl( + {required this.basic, + required final List socials, + required this.about, + required final List services, + required final List projects, + required final List contact}) + : _socials = socials, + _services = services, + _projects = projects, + _contact = contact; + + factory _$DataImpl.fromJson(Map json) => + _$$DataImplFromJson(json); + + @override + final Basic basic; + final List _socials; + @override + List get socials { + if (_socials is EqualUnmodifiableListView) return _socials; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_socials); + } + + @override + final About about; + final List _services; + @override + List get services { + if (_services is EqualUnmodifiableListView) return _services; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_services); + } + + final List _projects; + @override + List get projects { + if (_projects is EqualUnmodifiableListView) return _projects; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_projects); + } + + final List _contact; + @override + List get contact { + if (_contact is EqualUnmodifiableListView) return _contact; + // ignore: implicit_dynamic_type + return EqualUnmodifiableListView(_contact); + } + + @override + String toString() { + return 'Data(basic: $basic, socials: $socials, about: $about, services: $services, projects: $projects, contact: $contact)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$DataImpl && + (identical(other.basic, basic) || other.basic == basic) && + const DeepCollectionEquality().equals(other._socials, _socials) && + (identical(other.about, about) || other.about == about) && + const DeepCollectionEquality().equals(other._services, _services) && + const DeepCollectionEquality().equals(other._projects, _projects) && + const DeepCollectionEquality().equals(other._contact, _contact)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash( + runtimeType, + basic, + const DeepCollectionEquality().hash(_socials), + about, + const DeepCollectionEquality().hash(_services), + const DeepCollectionEquality().hash(_projects), + const DeepCollectionEquality().hash(_contact)); + + /// Create a copy of Data + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$DataImplCopyWith<_$DataImpl> get copyWith => + __$$DataImplCopyWithImpl<_$DataImpl>(this, _$identity); + + @override + Map toJson() { + return _$$DataImplToJson( + this, + ); + } +} + +abstract class _Data implements Data { + const factory _Data( + {required final Basic basic, + required final List socials, + required final About about, + required final List services, + required final List projects, + required final List contact}) = _$DataImpl; + + factory _Data.fromJson(Map json) = _$DataImpl.fromJson; + + @override + Basic get basic; + @override + List get socials; + @override + About get about; + @override + List get services; + @override + List get projects; + @override + List get contact; + + /// Create a copy of Data + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$DataImplCopyWith<_$DataImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/models/data.g.dart b/lib/models/data.g.dart new file mode 100644 index 0000000..e96e0bb --- /dev/null +++ b/lib/models/data.g.dart @@ -0,0 +1,34 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'data.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +_$DataImpl _$$DataImplFromJson(Map json) => _$DataImpl( + basic: Basic.fromJson(json['basic'] as Map), + socials: (json['socials'] as List) + .map((e) => Social.fromJson(e as Map)) + .toList(), + about: About.fromJson(json['about'] as Map), + services: (json['services'] as List) + .map((e) => ServiceData.fromJson(e as Map)) + .toList(), + projects: (json['projects'] as List) + .map((e) => Project.fromJson(e as Map)) + .toList(), + contact: (json['contact'] as List) + .map((e) => Contact.fromJson(e as Map)) + .toList(), + ); + +Map _$$DataImplToJson(_$DataImpl instance) => + { + 'basic': instance.basic.toJson(), + 'socials': instance.socials.map((e) => e.toJson()).toList(), + 'about': instance.about.toJson(), + 'services': instance.services.map((e) => e.toJson()).toList(), + 'projects': instance.projects.map((e) => e.toJson()).toList(), + 'contact': instance.contact.map((e) => e.toJson()).toList(), + }; diff --git a/lib/models/project.dart b/lib/models/project.dart new file mode 100644 index 0000000..b05c68b --- /dev/null +++ b/lib/models/project.dart @@ -0,0 +1,18 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'project.freezed.dart'; +part 'project.g.dart'; + +@freezed +class Project with _$Project { + const factory Project({ + required String banner, + required String icon, + required String title, + required String description, + required String link, + }) = _Project; + + factory Project.fromJson(Map json) => + _$ProjectFromJson(json); +} diff --git a/lib/models/project.freezed.dart b/lib/models/project.freezed.dart new file mode 100644 index 0000000..a422551 --- /dev/null +++ b/lib/models/project.freezed.dart @@ -0,0 +1,246 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'project.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models'); + +Project _$ProjectFromJson(Map json) { + return _Project.fromJson(json); +} + +/// @nodoc +mixin _$Project { + String get banner => throw _privateConstructorUsedError; + String get icon => throw _privateConstructorUsedError; + String get title => throw _privateConstructorUsedError; + String get description => throw _privateConstructorUsedError; + String get link => throw _privateConstructorUsedError; + + /// Serializes this Project to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of Project + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $ProjectCopyWith get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $ProjectCopyWith<$Res> { + factory $ProjectCopyWith(Project value, $Res Function(Project) then) = + _$ProjectCopyWithImpl<$Res, Project>; + @useResult + $Res call( + {String banner, + String icon, + String title, + String description, + String link}); +} + +/// @nodoc +class _$ProjectCopyWithImpl<$Res, $Val extends Project> + implements $ProjectCopyWith<$Res> { + _$ProjectCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of Project + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? banner = null, + Object? icon = null, + Object? title = null, + Object? description = null, + Object? link = null, + }) { + return _then(_value.copyWith( + banner: null == banner + ? _value.banner + : banner // ignore: cast_nullable_to_non_nullable + as String, + icon: null == icon + ? _value.icon + : icon // ignore: cast_nullable_to_non_nullable + as String, + title: null == title + ? _value.title + : title // ignore: cast_nullable_to_non_nullable + as String, + description: null == description + ? _value.description + : description // ignore: cast_nullable_to_non_nullable + as String, + link: null == link + ? _value.link + : link // ignore: cast_nullable_to_non_nullable + as String, + ) as $Val); + } +} + +/// @nodoc +abstract class _$$ProjectImplCopyWith<$Res> implements $ProjectCopyWith<$Res> { + factory _$$ProjectImplCopyWith( + _$ProjectImpl value, $Res Function(_$ProjectImpl) then) = + __$$ProjectImplCopyWithImpl<$Res>; + @override + @useResult + $Res call( + {String banner, + String icon, + String title, + String description, + String link}); +} + +/// @nodoc +class __$$ProjectImplCopyWithImpl<$Res> + extends _$ProjectCopyWithImpl<$Res, _$ProjectImpl> + implements _$$ProjectImplCopyWith<$Res> { + __$$ProjectImplCopyWithImpl( + _$ProjectImpl _value, $Res Function(_$ProjectImpl) _then) + : super(_value, _then); + + /// Create a copy of Project + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? banner = null, + Object? icon = null, + Object? title = null, + Object? description = null, + Object? link = null, + }) { + return _then(_$ProjectImpl( + banner: null == banner + ? _value.banner + : banner // ignore: cast_nullable_to_non_nullable + as String, + icon: null == icon + ? _value.icon + : icon // ignore: cast_nullable_to_non_nullable + as String, + title: null == title + ? _value.title + : title // ignore: cast_nullable_to_non_nullable + as String, + description: null == description + ? _value.description + : description // ignore: cast_nullable_to_non_nullable + as String, + link: null == link + ? _value.link + : link // ignore: cast_nullable_to_non_nullable + as String, + )); + } +} + +/// @nodoc +@JsonSerializable() +class _$ProjectImpl implements _Project { + const _$ProjectImpl( + {required this.banner, + required this.icon, + required this.title, + required this.description, + required this.link}); + + factory _$ProjectImpl.fromJson(Map json) => + _$$ProjectImplFromJson(json); + + @override + final String banner; + @override + final String icon; + @override + final String title; + @override + final String description; + @override + final String link; + + @override + String toString() { + return 'Project(banner: $banner, icon: $icon, title: $title, description: $description, link: $link)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ProjectImpl && + (identical(other.banner, banner) || other.banner == banner) && + (identical(other.icon, icon) || other.icon == icon) && + (identical(other.title, title) || other.title == title) && + (identical(other.description, description) || + other.description == description) && + (identical(other.link, link) || other.link == link)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => + Object.hash(runtimeType, banner, icon, title, description, link); + + /// Create a copy of Project + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ProjectImplCopyWith<_$ProjectImpl> get copyWith => + __$$ProjectImplCopyWithImpl<_$ProjectImpl>(this, _$identity); + + @override + Map toJson() { + return _$$ProjectImplToJson( + this, + ); + } +} + +abstract class _Project implements Project { + const factory _Project( + {required final String banner, + required final String icon, + required final String title, + required final String description, + required final String link}) = _$ProjectImpl; + + factory _Project.fromJson(Map json) = _$ProjectImpl.fromJson; + + @override + String get banner; + @override + String get icon; + @override + String get title; + @override + String get description; + @override + String get link; + + /// Create a copy of Project + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ProjectImplCopyWith<_$ProjectImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/models/project.g.dart b/lib/models/project.g.dart new file mode 100644 index 0000000..df46358 --- /dev/null +++ b/lib/models/project.g.dart @@ -0,0 +1,25 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'project.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +_$ProjectImpl _$$ProjectImplFromJson(Map json) => + _$ProjectImpl( + banner: json['banner'] as String, + icon: json['icon'] as String, + title: json['title'] as String, + description: json['description'] as String, + link: json['link'] as String, + ); + +Map _$$ProjectImplToJson(_$ProjectImpl instance) => + { + 'banner': instance.banner, + 'icon': instance.icon, + 'title': instance.title, + 'description': instance.description, + 'link': instance.link, + }; diff --git a/lib/models/service_data.dart b/lib/models/service_data.dart new file mode 100644 index 0000000..b5936c4 --- /dev/null +++ b/lib/models/service_data.dart @@ -0,0 +1,15 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'service_data.freezed.dart'; +part 'service_data.g.dart'; + +@freezed +class ServiceData with _$ServiceData { + const factory ServiceData({ + required String icon, + required String title, + }) = _ServiceData; + + factory ServiceData.fromJson(Map json) => + _$ServiceDataFromJson(json); +} diff --git a/lib/models/service_data.freezed.dart b/lib/models/service_data.freezed.dart new file mode 100644 index 0000000..2750020 --- /dev/null +++ b/lib/models/service_data.freezed.dart @@ -0,0 +1,182 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'service_data.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models'); + +ServiceData _$ServiceDataFromJson(Map json) { + return _ServiceData.fromJson(json); +} + +/// @nodoc +mixin _$ServiceData { + String get icon => throw _privateConstructorUsedError; + String get title => throw _privateConstructorUsedError; + + /// Serializes this ServiceData to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of ServiceData + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $ServiceDataCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $ServiceDataCopyWith<$Res> { + factory $ServiceDataCopyWith( + ServiceData value, $Res Function(ServiceData) then) = + _$ServiceDataCopyWithImpl<$Res, ServiceData>; + @useResult + $Res call({String icon, String title}); +} + +/// @nodoc +class _$ServiceDataCopyWithImpl<$Res, $Val extends ServiceData> + implements $ServiceDataCopyWith<$Res> { + _$ServiceDataCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of ServiceData + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? icon = null, + Object? title = null, + }) { + return _then(_value.copyWith( + icon: null == icon + ? _value.icon + : icon // ignore: cast_nullable_to_non_nullable + as String, + title: null == title + ? _value.title + : title // ignore: cast_nullable_to_non_nullable + as String, + ) as $Val); + } +} + +/// @nodoc +abstract class _$$ServiceDataImplCopyWith<$Res> + implements $ServiceDataCopyWith<$Res> { + factory _$$ServiceDataImplCopyWith( + _$ServiceDataImpl value, $Res Function(_$ServiceDataImpl) then) = + __$$ServiceDataImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({String icon, String title}); +} + +/// @nodoc +class __$$ServiceDataImplCopyWithImpl<$Res> + extends _$ServiceDataCopyWithImpl<$Res, _$ServiceDataImpl> + implements _$$ServiceDataImplCopyWith<$Res> { + __$$ServiceDataImplCopyWithImpl( + _$ServiceDataImpl _value, $Res Function(_$ServiceDataImpl) _then) + : super(_value, _then); + + /// Create a copy of ServiceData + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? icon = null, + Object? title = null, + }) { + return _then(_$ServiceDataImpl( + icon: null == icon + ? _value.icon + : icon // ignore: cast_nullable_to_non_nullable + as String, + title: null == title + ? _value.title + : title // ignore: cast_nullable_to_non_nullable + as String, + )); + } +} + +/// @nodoc +@JsonSerializable() +class _$ServiceDataImpl implements _ServiceData { + const _$ServiceDataImpl({required this.icon, required this.title}); + + factory _$ServiceDataImpl.fromJson(Map json) => + _$$ServiceDataImplFromJson(json); + + @override + final String icon; + @override + final String title; + + @override + String toString() { + return 'ServiceData(icon: $icon, title: $title)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$ServiceDataImpl && + (identical(other.icon, icon) || other.icon == icon) && + (identical(other.title, title) || other.title == title)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash(runtimeType, icon, title); + + /// Create a copy of ServiceData + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$ServiceDataImplCopyWith<_$ServiceDataImpl> get copyWith => + __$$ServiceDataImplCopyWithImpl<_$ServiceDataImpl>(this, _$identity); + + @override + Map toJson() { + return _$$ServiceDataImplToJson( + this, + ); + } +} + +abstract class _ServiceData implements ServiceData { + const factory _ServiceData( + {required final String icon, + required final String title}) = _$ServiceDataImpl; + + factory _ServiceData.fromJson(Map json) = + _$ServiceDataImpl.fromJson; + + @override + String get icon; + @override + String get title; + + /// Create a copy of ServiceData + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$ServiceDataImplCopyWith<_$ServiceDataImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/models/service_data.g.dart b/lib/models/service_data.g.dart new file mode 100644 index 0000000..2434450 --- /dev/null +++ b/lib/models/service_data.g.dart @@ -0,0 +1,19 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'service_data.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +_$ServiceDataImpl _$$ServiceDataImplFromJson(Map json) => + _$ServiceDataImpl( + icon: json['icon'] as String, + title: json['title'] as String, + ); + +Map _$$ServiceDataImplToJson(_$ServiceDataImpl instance) => + { + 'icon': instance.icon, + 'title': instance.title, + }; diff --git a/lib/models/social.dart b/lib/models/social.dart new file mode 100644 index 0000000..fa6c608 --- /dev/null +++ b/lib/models/social.dart @@ -0,0 +1,14 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'social.freezed.dart'; +part 'social.g.dart'; + +@freezed +class Social with _$Social { + const factory Social({ + required String icon, + required String url, + }) = _Social; + + factory Social.fromJson(Map json) => _$SocialFromJson(json); +} diff --git a/lib/models/social.freezed.dart b/lib/models/social.freezed.dart new file mode 100644 index 0000000..727bd63 --- /dev/null +++ b/lib/models/social.freezed.dart @@ -0,0 +1,177 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'social.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models'); + +Social _$SocialFromJson(Map json) { + return _Social.fromJson(json); +} + +/// @nodoc +mixin _$Social { + String get icon => throw _privateConstructorUsedError; + String get url => throw _privateConstructorUsedError; + + /// Serializes this Social to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of Social + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $SocialCopyWith get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $SocialCopyWith<$Res> { + factory $SocialCopyWith(Social value, $Res Function(Social) then) = + _$SocialCopyWithImpl<$Res, Social>; + @useResult + $Res call({String icon, String url}); +} + +/// @nodoc +class _$SocialCopyWithImpl<$Res, $Val extends Social> + implements $SocialCopyWith<$Res> { + _$SocialCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of Social + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? icon = null, + Object? url = null, + }) { + return _then(_value.copyWith( + icon: null == icon + ? _value.icon + : icon // ignore: cast_nullable_to_non_nullable + as String, + url: null == url + ? _value.url + : url // ignore: cast_nullable_to_non_nullable + as String, + ) as $Val); + } +} + +/// @nodoc +abstract class _$$SocialImplCopyWith<$Res> implements $SocialCopyWith<$Res> { + factory _$$SocialImplCopyWith( + _$SocialImpl value, $Res Function(_$SocialImpl) then) = + __$$SocialImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({String icon, String url}); +} + +/// @nodoc +class __$$SocialImplCopyWithImpl<$Res> + extends _$SocialCopyWithImpl<$Res, _$SocialImpl> + implements _$$SocialImplCopyWith<$Res> { + __$$SocialImplCopyWithImpl( + _$SocialImpl _value, $Res Function(_$SocialImpl) _then) + : super(_value, _then); + + /// Create a copy of Social + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? icon = null, + Object? url = null, + }) { + return _then(_$SocialImpl( + icon: null == icon + ? _value.icon + : icon // ignore: cast_nullable_to_non_nullable + as String, + url: null == url + ? _value.url + : url // ignore: cast_nullable_to_non_nullable + as String, + )); + } +} + +/// @nodoc +@JsonSerializable() +class _$SocialImpl implements _Social { + const _$SocialImpl({required this.icon, required this.url}); + + factory _$SocialImpl.fromJson(Map json) => + _$$SocialImplFromJson(json); + + @override + final String icon; + @override + final String url; + + @override + String toString() { + return 'Social(icon: $icon, url: $url)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$SocialImpl && + (identical(other.icon, icon) || other.icon == icon) && + (identical(other.url, url) || other.url == url)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash(runtimeType, icon, url); + + /// Create a copy of Social + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$SocialImplCopyWith<_$SocialImpl> get copyWith => + __$$SocialImplCopyWithImpl<_$SocialImpl>(this, _$identity); + + @override + Map toJson() { + return _$$SocialImplToJson( + this, + ); + } +} + +abstract class _Social implements Social { + const factory _Social( + {required final String icon, required final String url}) = _$SocialImpl; + + factory _Social.fromJson(Map json) = _$SocialImpl.fromJson; + + @override + String get icon; + @override + String get url; + + /// Create a copy of Social + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$SocialImplCopyWith<_$SocialImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/models/social.g.dart b/lib/models/social.g.dart new file mode 100644 index 0000000..1bf07ec --- /dev/null +++ b/lib/models/social.g.dart @@ -0,0 +1,18 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'social.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +_$SocialImpl _$$SocialImplFromJson(Map json) => _$SocialImpl( + icon: json['icon'] as String, + url: json['url'] as String, + ); + +Map _$$SocialImplToJson(_$SocialImpl instance) => + { + 'icon': instance.icon, + 'url': instance.url, + }; diff --git a/lib/models/work.dart b/lib/models/work.dart new file mode 100644 index 0000000..6e772e7 --- /dev/null +++ b/lib/models/work.dart @@ -0,0 +1,15 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'work.freezed.dart'; +part 'work.g.dart'; + +@freezed +class Work with _$Work { + const factory Work({ + required String image, + required String url, + required int height, + }) = _Work; + + factory Work.fromJson(Map json) => _$WorkFromJson(json); +} diff --git a/lib/models/work.freezed.dart b/lib/models/work.freezed.dart new file mode 100644 index 0000000..4ed46ff --- /dev/null +++ b/lib/models/work.freezed.dart @@ -0,0 +1,195 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'work.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models'); + +Work _$WorkFromJson(Map json) { + return _Work.fromJson(json); +} + +/// @nodoc +mixin _$Work { + String get image => throw _privateConstructorUsedError; + String get url => throw _privateConstructorUsedError; + int get height => throw _privateConstructorUsedError; + + /// Serializes this Work to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of Work + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $WorkCopyWith get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $WorkCopyWith<$Res> { + factory $WorkCopyWith(Work value, $Res Function(Work) then) = + _$WorkCopyWithImpl<$Res, Work>; + @useResult + $Res call({String image, String url, int height}); +} + +/// @nodoc +class _$WorkCopyWithImpl<$Res, $Val extends Work> + implements $WorkCopyWith<$Res> { + _$WorkCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of Work + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? image = null, + Object? url = null, + Object? height = null, + }) { + return _then(_value.copyWith( + image: null == image + ? _value.image + : image // ignore: cast_nullable_to_non_nullable + as String, + url: null == url + ? _value.url + : url // ignore: cast_nullable_to_non_nullable + as String, + height: null == height + ? _value.height + : height // ignore: cast_nullable_to_non_nullable + as int, + ) as $Val); + } +} + +/// @nodoc +abstract class _$$WorkImplCopyWith<$Res> implements $WorkCopyWith<$Res> { + factory _$$WorkImplCopyWith( + _$WorkImpl value, $Res Function(_$WorkImpl) then) = + __$$WorkImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({String image, String url, int height}); +} + +/// @nodoc +class __$$WorkImplCopyWithImpl<$Res> + extends _$WorkCopyWithImpl<$Res, _$WorkImpl> + implements _$$WorkImplCopyWith<$Res> { + __$$WorkImplCopyWithImpl(_$WorkImpl _value, $Res Function(_$WorkImpl) _then) + : super(_value, _then); + + /// Create a copy of Work + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? image = null, + Object? url = null, + Object? height = null, + }) { + return _then(_$WorkImpl( + image: null == image + ? _value.image + : image // ignore: cast_nullable_to_non_nullable + as String, + url: null == url + ? _value.url + : url // ignore: cast_nullable_to_non_nullable + as String, + height: null == height + ? _value.height + : height // ignore: cast_nullable_to_non_nullable + as int, + )); + } +} + +/// @nodoc +@JsonSerializable() +class _$WorkImpl implements _Work { + const _$WorkImpl( + {required this.image, required this.url, required this.height}); + + factory _$WorkImpl.fromJson(Map json) => + _$$WorkImplFromJson(json); + + @override + final String image; + @override + final String url; + @override + final int height; + + @override + String toString() { + return 'Work(image: $image, url: $url, height: $height)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$WorkImpl && + (identical(other.image, image) || other.image == image) && + (identical(other.url, url) || other.url == url) && + (identical(other.height, height) || other.height == height)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash(runtimeType, image, url, height); + + /// Create a copy of Work + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$WorkImplCopyWith<_$WorkImpl> get copyWith => + __$$WorkImplCopyWithImpl<_$WorkImpl>(this, _$identity); + + @override + Map toJson() { + return _$$WorkImplToJson( + this, + ); + } +} + +abstract class _Work implements Work { + const factory _Work( + {required final String image, + required final String url, + required final int height}) = _$WorkImpl; + + factory _Work.fromJson(Map json) = _$WorkImpl.fromJson; + + @override + String get image; + @override + String get url; + @override + int get height; + + /// Create a copy of Work + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$WorkImplCopyWith<_$WorkImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/models/work.g.dart b/lib/models/work.g.dart new file mode 100644 index 0000000..4650fa4 --- /dev/null +++ b/lib/models/work.g.dart @@ -0,0 +1,20 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'work.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +_$WorkImpl _$$WorkImplFromJson(Map json) => _$WorkImpl( + image: json['image'] as String, + url: json['url'] as String, + height: (json['height'] as num).toInt(), + ); + +Map _$$WorkImplToJson(_$WorkImpl instance) => + { + 'image': instance.image, + 'url': instance.url, + 'height': instance.height, + }; diff --git a/pubspec.yaml b/pubspec.yaml index e555c9b..663aa81 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -7,6 +7,8 @@ environment: dependencies: jaspr: ^0.15.1 + freezed_annotation: ^2.4.1 + json_annotation: ^4.8.1 dev_dependencies: build_runner: ^2.4.0 @@ -16,6 +18,9 @@ dev_dependencies: lints: ^3.0.0 jaspr_test: ^0.15.1 + freezed: ^2.4.1 + json_serializable: ^6.7.1 + jaspr: mode: static