Browse Source

[packages] Add equatable

merge-requests/22/head
Vitaliy Zarubin 2 years ago
parent
commit
1cdf930910
  1. 5
      example/lib/l10n/app_en.arb
  2. 5
      example/lib/l10n/app_ru.arb
  3. 14
      example/lib/packages/equatable/model.dart
  4. 33
      example/lib/packages/equatable/page.dart
  5. 45
      example/lib/packages/equatable/user_entity.dart
  6. 25
      example/lib/packages/equatable/user_entity_equatable.dart

5
example/lib/l10n/app_en.arb

@ -1,4 +1,9 @@
{
"@_EQUATABLE": {},
"equatableTitleDefault": "It's default class, 46 of lines",
"equatableTitleFreezed": "It's equatable class, 26 of lines",
"equatableSubtitle": "Methods: toString, operator ==, hashCode.",
"@_FREEZED": {},
"freezedTitleDefault": "It's default class, 74 of lines",
"freezedTitleFreezed": "It's freezed class, 21 of lines",

5
example/lib/l10n/app_ru.arb

@ -1,4 +1,9 @@
{
"@_EQUATABLE": {},
"equatableTitleDefault": "Класс по умолчанию, 46 строки",
"equatableTitleFreezed": "Класс c freezed, 26 строк",
"equatableSubtitle": "Методы: toString, operator ==, hashCode.",
"@_FREEZED": {},
"freezedTitleDefault": "Класс по умолчанию, 74 строки",
"freezedTitleFreezed": "Класс c freezed, 21 строка",

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

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

33
example/lib/packages/equatable/page.dart

@ -5,9 +5,11 @@
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 +44,37 @@ class _EquatablePageState extends AppState<EquatablePage> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
BlockInfoPackage(widget.package),
TextTitleLarge(l10n.equatableTitleDefault),
const SizedBox(height: 8),
TextBodyMedium(l10n.equatableSubtitle),
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(model.userEntity.toString()),
),
),
const SizedBox(height: 20),
TextTitleLarge(l10n.equatableTitleFreezed),
const SizedBox(height: 8),
TextBodyMedium(l10n.equatableSubtitle),
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(model.userEntityEquatable.toString()),
),
),
],
),
),

45
example/lib/packages/equatable/user_entity.dart

@ -0,0 +1,45 @@
/*
* 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,
});
final String name;
final String email;
final int age;
@override
String toString() {
return 'UserEntity('
'$name,'
'$email,'
'$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,
);
}
}

25
example/lib/packages/equatable/user_entity_equatable.dart

@ -0,0 +1,25 @@
/*
* Copyright (c) 2023. Open Mobile Platform LLC.
* License: Proprietary.
*/
import 'package:equatable/equatable.dart';
import 'package:flutter/foundation.dart';
@immutable
class UserEntityEquatable extends Equatable {
const UserEntityEquatable({
required this.name,
required this.email,
required this.age,
});
final String name;
final String email;
final int age;
@override
List<Object> get props => [name, email, age];
@override
bool get stringify => true;
}
Loading…
Cancel
Save