Browse Source

[packages] Add freezed

merge-requests/22/head
Vitaliy Zarubin 2 years ago
parent
commit
0c018e325e
  1. 4
      example/.gitignore
  2. 5
      example/lib/l10n/app_en.arb
  3. 5
      example/lib/l10n/app_ru.arb
  4. 31
      example/lib/packages/build_runner/package.dart
  5. 14
      example/lib/packages/freezed/model.dart
  6. 43
      example/lib/packages/freezed/page.dart
  7. 73
      example/lib/packages/freezed/user_entity.dart
  8. 20
      example/lib/packages/freezed/user_entity_freezed.dart
  9. 26
      example/lib/packages/freezed_annotation/package.dart
  10. 12
      example/lib/packages/intl/package.dart
  11. 28
      example/lib/packages/json_annotation/package.dart
  12. 26
      example/lib/packages/json_serializable/package.dart
  13. 8
      example/lib/packages/packages.dart
  14. 20
      example/pubspec.lock
  15. 12
      example/pubspec.yaml

4
example/.gitignore vendored

@ -45,3 +45,7 @@ app.*.map.json
# Aurora generated
/aurora/flutter
# Dart generated
*.g.dart
*.freezed.dart

5
example/lib/l10n/app_en.arb

@ -1,4 +1,9 @@
{
"@_FREEZED": {},
"freezedTitleDefault": "It's default class, 74 of lines",
"freezedTitleFreezed": "It's freezed class, 21 of lines",
"freezedSubtitle": "Methods: fromJson, copyWith, toJson, toString, operator ==, hashCode.",
"@_DARTZ": {},
"dartzTitle": "Convert size",
"dartzDesc": "Convert the size grid of Russia to the size grid of Europe.",

5
example/lib/l10n/app_ru.arb

@ -1,4 +1,9 @@
{
"@_FREEZED": {},
"freezedTitleDefault": "Класс по умолчанию, 74 строки",
"freezedTitleFreezed": "Класс c freezed, 21 строка",
"freezedSubtitle": "Методы: fromJson, copyWith, toJson, toString, operator ==, hashCode.",
"@_DARTZ": {},
"dartzTitle": "Преобразовать размер",
"dartzDesc": "Преобразовать размерную сетку России в размерную сетку Европы.",

31
example/lib/packages/build_runner/package.dart

@ -0,0 +1,31 @@
/*
* Copyright (c) 2023. Open Mobile Platform LLC.
* License: Proprietary.
*/
import 'package:flutter_example_packages/base/package/package_dialog.dart';
/// Package values
final packageBuildRunner = PackageDialog(
key: 'build_runner',
descEN: '''
The build_runner package provides a concrete way of generating files using
Dart code. Files are always generated directly on disk, and rebuilds
are incremental - inspired by tools such as Bazel.
''',
descRU: '''
Пакет build_runner предоставляет конкретный способ создания файлов с
использованием кода Dart. Файлы всегда генерируются непосредственно на
диске и перестраиваются являются инкрементными вдохновлены такими
инструментами, как Bazel.
''',
messageEN: '''
This is a platform independent plugin used in this app, should work
for you too.
''',
messageRU: '''
Это плагин независимый от платформы, используется в этом приложении,
должен работать и у вас.
''',
version: '2.3.3',
isPlatformDependent: false,
);

14
example/lib/packages/freezed/model.dart

@ -3,6 +3,8 @@
* License: Proprietary.
*/
import 'package:flutter/widgets.dart';
import 'package:flutter_example_packages/packages/freezed/user_entity.dart';
import 'package:flutter_example_packages/packages/freezed/user_entity_freezed.dart';
import 'package:scoped_model/scoped_model.dart';
/// Model for [FreezedPage]
@ -10,4 +12,16 @@ class FreezedModel extends Model {
/// Get [ScopedModel]
static FreezedModel of(BuildContext context) =>
ScopedModel.of<FreezedModel>(context);
UserEntity userEntity = UserEntity.fromJson(const {
'name': 'Default',
'email': 'default@yandex.ru',
'age': 12,
});
UserEntityFreezed userEntityFreezed = UserEntityFreezed.fromJson(const {
'name': 'Default',
'email': 'default@yandex.ru',
'age': 12,
});
}

43
example/lib/packages/freezed/page.dart

@ -2,12 +2,16 @@
* Copyright (c) 2023. Open Mobile Platform LLC.
* License: Proprietary.
*/
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter_example_packages/base/di/app_di.dart';
import 'package:flutter_example_packages/base/package/package.dart';
import 'package:flutter_example_packages/theme/radius.dart';
import 'package:flutter_example_packages/widgets/base/export.dart';
import 'package:flutter_example_packages/widgets/blocks/block_info_package.dart';
import 'package:flutter_example_packages/widgets/layouts/block_layout.dart';
import 'package:flutter_example_packages/widgets/texts/export.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'model.dart';
@ -42,6 +46,45 @@ class _FreezedPageState extends AppState<FreezedPage> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
BlockInfoPackage(widget.package),
TextTitleLarge(l10n.freezedTitleDefault),
const SizedBox(height: 8),
TextBodyMedium(l10n.freezedSubtitle),
const SizedBox(height: 14),
Container(
width: double.infinity,
decoration: BoxDecoration(
color: Colors.blue.shade50,
borderRadius: AppRadius.small,
),
child: Padding(
padding: const EdgeInsets.all(10),
child: TextBodyMedium(
const JsonEncoder.withIndent(' ').convert(
model.userEntity.copyWith(name: 'My name').toJson()),
),
),
),
const SizedBox(height: 20),
TextTitleLarge(l10n.freezedTitleFreezed),
const SizedBox(height: 8),
TextBodyMedium(l10n.freezedSubtitle),
const SizedBox(height: 14),
Container(
width: double.infinity,
decoration: BoxDecoration(
color: Colors.blue.shade50,
borderRadius: AppRadius.small,
),
child: Padding(
padding: const EdgeInsets.all(10),
child: TextBodyMedium(
const JsonEncoder.withIndent(' ').convert(model
.userEntityFreezed
.copyWith(name: 'My name')
.toJson()),
),
),
),
],
),
),

73
example/lib/packages/freezed/user_entity.dart

@ -0,0 +1,73 @@
/*
* Copyright (c) 2023. Open Mobile Platform LLC.
* License: Proprietary.
*/
import 'package:flutter/foundation.dart';
@immutable
class UserEntity {
const UserEntity({
required this.name,
required this.email,
required this.age,
});
factory UserEntity.fromJson(Map<String, dynamic> json) {
return UserEntity(
name: json['name'] as String,
email: json['email'] as String,
age: json['age'] as int,
);
}
final String name;
final String email;
final int age;
UserEntity copyWith({
String? name,
String? email,
int? age,
}) {
return UserEntity(
name: name ?? this.name,
email: email ?? this.email,
age: age ?? this.age,
);
}
Map<String, dynamic> toJson() {
return {
'name': name,
'email': email,
'age': age,
};
}
@override
String toString() {
return 'UserEntity('
'name: $name'
'email: $email'
'age: $age'
')';
}
@override
bool operator ==(dynamic other) {
return other is UserEntity &&
other.name == name &&
other.email == email &&
other.age == age;
}
@override
int get hashCode {
return Object.hash(
runtimeType,
name,
email,
age,
);
}
}

20
example/lib/packages/freezed/user_entity_freezed.dart

@ -0,0 +1,20 @@
/*
* Copyright (c) 2023. Open Mobile Platform LLC.
* License: Proprietary.
*/
import 'package:freezed_annotation/freezed_annotation.dart';
part 'user_entity_freezed.freezed.dart';
part 'user_entity_freezed.g.dart';
@freezed
class UserEntityFreezed with _$UserEntityFreezed {
const factory UserEntityFreezed({
required String name,
required String email,
required int age,
}) = _UserEntityFreezed;
factory UserEntityFreezed.fromJson(Map<String, dynamic> json) =>
_$UserEntityFreezedFromJson(json);
}

26
example/lib/packages/freezed_annotation/package.dart

@ -0,0 +1,26 @@
/*
* Copyright (c) 2023. Open Mobile Platform LLC.
* License: Proprietary.
*/
import 'package:flutter_example_packages/base/package/package_dialog.dart';
/// Package values
final packageFreezedAnnotation = PackageDialog(
key: 'freezed_annotation',
descEN: '''
Annotations for freezed. This package does nothing without freezed.
''',
descRU: '''
Аннотации для freezed. Этот пакет ничего не делает без freezed.
''',
messageEN: '''
This is a platform independent plugin used in this application in the demo
of the freezed plugin.
''',
messageRU: '''
Это плагин независимый от платформы, используется в этом приложении в
демострации работы плагина freezed.
''',
version: '2.2.0',
isPlatformDependent: false,
);

12
example/lib/packages/intl/package.dart

@ -18,13 +18,13 @@ final packageIntl = PackageDialog(
форматирование и разбор даты/числа, а также двунаправленный текст.
''',
messageEN: '''
This is a platform independent plugin used in this app, should work
for you too.
''',
This is a platform independent plugin used in this app, should work
for you too.
''',
messageRU: '''
Это плагин независимый от платформы, используется в этом приложении,
должен работать и у вас.
''',
Это плагин независимый от платформы, используется в этом приложении,
должен работать и у вас.
''',
version: '0.17.0',
isPlatformDependent: false,
);

28
example/lib/packages/json_annotation/package.dart

@ -0,0 +1,28 @@
/*
* Copyright (c) 2023. Open Mobile Platform LLC.
* License: Proprietary.
*/
import 'package:flutter_example_packages/base/package/package_dialog.dart';
/// Package values
final packageJsonAnnotation = PackageDialog(
key: 'json_annotation',
descEN: '''
Defines the annotations used by json_serializable to create code for
JSON serialization and deserialization.
''',
descRU: '''
Определяет аннотации, используемые json_serializable для создания кода для
JSON Serialization и Deserialization.
''',
messageEN: '''
This is a platform independent plugin used in this application in the demo
of the freezed plugin.
''',
messageRU: '''
Это плагин независимый от платформы, используется в этом приложении в
демострации работы плагина freezed.
''',
version: '4.8.0',
isPlatformDependent: false,
);

26
example/lib/packages/json_serializable/package.dart

@ -0,0 +1,26 @@
/*
* Copyright (c) 2023. Open Mobile Platform LLC.
* License: Proprietary.
*/
import 'package:flutter_example_packages/base/package/package_dialog.dart';
/// Package values
final packageJsonSerializable = PackageDialog(
key: 'json_serializable',
descEN: '''
Provides Dart Build System builders for handling JSON.
''',
descRU: '''
Предоставляет Dart Build System System для обработки JSON.
''',
messageEN: '''
This is a platform independent plugin used in this application in the demo
of the freezed plugin.
''',
messageRU: '''
Это плагин независимый от платформы, используется в этом приложении в
демострации работы плагина freezed.
''',
version: '6.6.1',
isPlatformDependent: false,
);

8
example/lib/packages/packages.dart

@ -4,6 +4,7 @@
*/
import 'package:flutter_example_packages/base/package/package.dart';
import 'package:flutter_example_packages/packages/battery_plus/package.dart';
import 'package:flutter_example_packages/packages/build_runner/package.dart';
import 'package:flutter_example_packages/packages/cached_network_image/package.dart';
import 'package:flutter_example_packages/packages/cupertino_icons/package.dart';
import 'package:flutter_example_packages/packages/dartz/package.dart';
@ -14,9 +15,12 @@ import 'package:flutter_example_packages/packages/flutter_local_notifications/pa
import 'package:flutter_example_packages/packages/flutter_markdown/package.dart';
import 'package:flutter_example_packages/packages/flutter_secure_storage/package.dart';
import 'package:flutter_example_packages/packages/freezed/package.dart';
import 'package:flutter_example_packages/packages/freezed_annotation/package.dart';
import 'package:flutter_example_packages/packages/get_it/package.dart';
import 'package:flutter_example_packages/packages/google_fonts/package.dart';
import 'package:flutter_example_packages/packages/intl/package.dart';
import 'package:flutter_example_packages/packages/json_annotation/package.dart';
import 'package:flutter_example_packages/packages/json_serializable/package.dart';
import 'package:flutter_example_packages/packages/package_info_plus/package.dart';
import 'package:flutter_example_packages/packages/path_provider/package.dart';
import 'package:flutter_example_packages/packages/photo_view/package.dart';
@ -37,6 +41,7 @@ import 'flutter_keyboard_visibility/package.dart';
/// List app packages
final packages = <Package>[
packageBatteryPlus,
packageBuildRunner,
packageCachedNetworkImage,
packageCrypto,
packageCupertinoIcons,
@ -49,9 +54,12 @@ final packages = <Package>[
packageFlutterMarkdown,
packageFlutterSecureStorage,
packageFreezed,
packageFreezedAnnotation,
packageGetIt,
packageGoogleFonts,
packageIntl,
packageJsonAnnotation,
packageJsonSerializable,
packagePackageInfoPlus,
packagePathProvider,
packagePhotoView,

20
example/pubspec.lock

@ -466,14 +466,14 @@ packages:
source: sdk
version: "0.0.0"
freezed:
dependency: "direct main"
dependency: "direct dev"
description:
name: freezed
url: "https://pub.dartlang.org"
source: hosted
version: "2.3.3"
freezed_annotation:
dependency: transitive
dependency: "direct main"
description:
name: freezed_annotation
url: "https://pub.dartlang.org"
@ -557,12 +557,19 @@ packages:
source: hosted
version: "0.6.4"
json_annotation:
dependency: transitive
dependency: "direct main"
description:
name: json_annotation
url: "https://pub.dartlang.org"
source: hosted
version: "4.8.0"
json_serializable:
dependency: "direct dev"
description:
name: json_serializable
url: "https://pub.dartlang.org"
source: hosted
version: "6.6.1"
lints:
dependency: transitive
description:
@ -896,6 +903,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.2"
source_helper:
dependency: transitive
description:
name: source_helper
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.3"
source_span:
dependency: transitive
description:

12
example/pubspec.yaml

@ -38,8 +38,6 @@ dependencies:
photo_view: ^0.14.0
## https://pub.dev/packages/dartz
dartz: ^0.10.1
## https://pub.dev/packages/freezed
freezed: ^2.3.3
## https://pub.dev/packages/provider
provider: ^6.0.5
## https://pub.dev/packages/equatable
@ -52,6 +50,10 @@ dependencies:
translator: ^0.1.7
## https://pub.dev/packages/flutter_markdown
flutter_markdown: ^0.6.15
## https://pub.dev/packages/freezed_annotation
freezed_annotation: ^2.2.0
## https://pub.dev/packages/json_annotation
json_annotation: ^4.8.0
## https://os-git.omprussia.ru/non-oss/flutter/flutter-plugins/-/tree/master/packages/xdga_directories
xdga_directories:
@ -145,8 +147,14 @@ dev_dependencies:
flutter_test:
sdk:
flutter
## https://pub.dev/packages/flutter_lints @todo
flutter_lints: ^2.0.0
## https://pub.dev/packages/build_runner
build_runner: ^2.3.3
## https://pub.dev/packages/freezed
freezed: ^2.3.3
## https://pub.dev/packages/json_serializable
json_serializable: ^6.6.1
flutter:
generate: true

Loading…
Cancel
Save