From 84aea0e9ea487a89e44ca7a5e07625fee79a66c1 Mon Sep 17 00:00:00 2001 From: Vitaliy Zarubin Date: Fri, 7 Jul 2023 11:57:40 +0300 Subject: [PATCH] [packages] Add base for packages --- example/lib/packages/dartz/model.dart | 13 +++ example/lib/packages/dartz/package.dart | 26 +++++ example/lib/packages/dartz/page.dart | 52 +++++++++ example/lib/packages/equatable/model.dart | 13 +++ example/lib/packages/equatable/package.dart | 28 +++++ example/lib/packages/equatable/page.dart | 52 +++++++++ .../lib/packages/flutter_markdown/model.dart | 13 +++ .../packages/flutter_markdown/package.dart | 29 +++++ .../lib/packages/flutter_markdown/page.dart | 52 +++++++++ example/lib/packages/freezed/model.dart | 13 +++ example/lib/packages/freezed/package.dart | 27 +++++ example/lib/packages/freezed/page.dart | 52 +++++++++ example/lib/packages/packages.dart | 16 +++ example/lib/packages/provider/model.dart | 13 +++ example/lib/packages/provider/package.dart | 28 +++++ example/lib/packages/provider/page.dart | 52 +++++++++ example/lib/packages/qr_flutter/model.dart | 13 +++ example/lib/packages/qr_flutter/package.dart | 28 +++++ example/lib/packages/qr_flutter/page.dart | 52 +++++++++ example/lib/packages/rxdart/model.dart | 13 +++ example/lib/packages/rxdart/package.dart | 26 +++++ example/lib/packages/rxdart/page.dart | 52 +++++++++ example/lib/packages/translator/model.dart | 13 +++ example/lib/packages/translator/package.dart | 26 +++++ example/lib/packages/translator/page.dart | 52 +++++++++ example/pubspec.lock | 106 ++++++++++++++++-- example/pubspec.yaml | 16 +++ 27 files changed, 865 insertions(+), 11 deletions(-) create mode 100644 example/lib/packages/dartz/model.dart create mode 100644 example/lib/packages/dartz/package.dart create mode 100644 example/lib/packages/dartz/page.dart create mode 100644 example/lib/packages/equatable/model.dart create mode 100644 example/lib/packages/equatable/package.dart create mode 100644 example/lib/packages/equatable/page.dart create mode 100644 example/lib/packages/flutter_markdown/model.dart create mode 100644 example/lib/packages/flutter_markdown/package.dart create mode 100644 example/lib/packages/flutter_markdown/page.dart create mode 100644 example/lib/packages/freezed/model.dart create mode 100644 example/lib/packages/freezed/package.dart create mode 100644 example/lib/packages/freezed/page.dart create mode 100644 example/lib/packages/provider/model.dart create mode 100644 example/lib/packages/provider/package.dart create mode 100644 example/lib/packages/provider/page.dart create mode 100644 example/lib/packages/qr_flutter/model.dart create mode 100644 example/lib/packages/qr_flutter/package.dart create mode 100644 example/lib/packages/qr_flutter/page.dart create mode 100644 example/lib/packages/rxdart/model.dart create mode 100644 example/lib/packages/rxdart/package.dart create mode 100644 example/lib/packages/rxdart/page.dart create mode 100644 example/lib/packages/translator/model.dart create mode 100644 example/lib/packages/translator/package.dart create mode 100644 example/lib/packages/translator/page.dart diff --git a/example/lib/packages/dartz/model.dart b/example/lib/packages/dartz/model.dart new file mode 100644 index 0000000..32dc023 --- /dev/null +++ b/example/lib/packages/dartz/model.dart @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/widgets.dart'; +import 'package:scoped_model/scoped_model.dart'; + +/// Model for [DartzPage] +class DartzModel extends Model { + /// Get [ScopedModel] + static DartzModel of(BuildContext context) => + ScopedModel.of(context); +} diff --git a/example/lib/packages/dartz/package.dart b/example/lib/packages/dartz/package.dart new file mode 100644 index 0000000..214a2d9 --- /dev/null +++ b/example/lib/packages/dartz/package.dart @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_page.dart'; +import 'package:get_it/get_it.dart'; + +import 'model.dart'; +import 'page.dart'; + +/// Package values +final packageDartz = PackagePage( + key: 'dartz', + descEN: ''' + Functional programming in Dart. + ''', + descRU: ''' + Функциональное программирование в Dart. + ''', + version: '0.10.1', + isPlatformDependent: false, + page: () => DartzPage(), + init: () { + GetIt.instance.registerFactory(() => DartzModel()); + }, +); diff --git a/example/lib/packages/dartz/page.dart b/example/lib/packages/dartz/page.dart new file mode 100644 index 0000000..e05b9f1 --- /dev/null +++ b/example/lib/packages/dartz/page.dart @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +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/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_gen/gen_l10n/app_localizations.dart'; + +import 'model.dart'; +import 'package.dart'; + +class DartzPage extends AppStatefulWidget { + DartzPage({ + super.key, + }); + + final Package package = packageDartz; + + @override + State createState() => _DartzPageState(); +} + +class _DartzPageState extends AppState { + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return BlockLayout( + model: getIt(), + title: widget.package.key, + builder: (context, child, model) { + return SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + BlockInfoPackage(widget.package), + ], + ), + ), + ); + }, + ); + } +} diff --git a/example/lib/packages/equatable/model.dart b/example/lib/packages/equatable/model.dart new file mode 100644 index 0000000..1f22fb0 --- /dev/null +++ b/example/lib/packages/equatable/model.dart @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/widgets.dart'; +import 'package:scoped_model/scoped_model.dart'; + +/// Model for [EquatablePage] +class EquatableModel extends Model { + /// Get [ScopedModel] + static EquatableModel of(BuildContext context) => + ScopedModel.of(context); +} diff --git a/example/lib/packages/equatable/package.dart b/example/lib/packages/equatable/package.dart new file mode 100644 index 0000000..bb5d85d --- /dev/null +++ b/example/lib/packages/equatable/package.dart @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_page.dart'; +import 'package:get_it/get_it.dart'; + +import 'model.dart'; +import 'page.dart'; + +/// Package values +final packageEquatable = PackagePage( + key: 'equatable', + descEN: ''' + Being able to compare objects in Dart often involves having to override + the == operator as well as hashCode. + ''', + descRU: ''' + Возможность сравнивать объекты в Dart часто требует переопределения + оператора ==, а также hashCode. + ''', + version: '2.0.5', + isPlatformDependent: false, + page: () => EquatablePage(), + init: () { + GetIt.instance.registerFactory(() => EquatableModel()); + }, +); diff --git a/example/lib/packages/equatable/page.dart b/example/lib/packages/equatable/page.dart new file mode 100644 index 0000000..63c452b --- /dev/null +++ b/example/lib/packages/equatable/page.dart @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +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/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_gen/gen_l10n/app_localizations.dart'; + +import 'model.dart'; +import 'package.dart'; + +class EquatablePage extends AppStatefulWidget { + EquatablePage({ + super.key, + }); + + final Package package = packageEquatable; + + @override + State createState() => _EquatablePageState(); +} + +class _EquatablePageState extends AppState { + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return BlockLayout( + model: getIt(), + title: widget.package.key, + builder: (context, child, model) { + return SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + BlockInfoPackage(widget.package), + ], + ), + ), + ); + }, + ); + } +} diff --git a/example/lib/packages/flutter_markdown/model.dart b/example/lib/packages/flutter_markdown/model.dart new file mode 100644 index 0000000..2ea2b60 --- /dev/null +++ b/example/lib/packages/flutter_markdown/model.dart @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/widgets.dart'; +import 'package:scoped_model/scoped_model.dart'; + +/// Model for [FlutterMarkdownPage] +class FlutterMarkdownModel extends Model { + /// Get [ScopedModel] + static FlutterMarkdownModel of(BuildContext context) => + ScopedModel.of(context); +} diff --git a/example/lib/packages/flutter_markdown/package.dart b/example/lib/packages/flutter_markdown/package.dart new file mode 100644 index 0000000..2caac89 --- /dev/null +++ b/example/lib/packages/flutter_markdown/package.dart @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_page.dart'; +import 'package:get_it/get_it.dart'; + +import 'model.dart'; +import 'page.dart'; + +/// Package values +final packageFlutterMarkdown = PackagePage( + key: 'flutter_markdown', + descEN: ''' + A markdown renderer for Flutter. It supports the original format, + but no inline HTML. + ''', + descRU: ''' + Рендерер уценки для Flutter. Он поддерживает исходный формат, + но не поддерживает встроенный HTML. + ''', + version: '0.6.15', + isPlatformDependent: false, + page: () => FlutterMarkdownPage(), + init: () { + GetIt.instance + .registerFactory(() => FlutterMarkdownModel()); + }, +); diff --git a/example/lib/packages/flutter_markdown/page.dart b/example/lib/packages/flutter_markdown/page.dart new file mode 100644 index 0000000..663a643 --- /dev/null +++ b/example/lib/packages/flutter_markdown/page.dart @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +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/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_gen/gen_l10n/app_localizations.dart'; + +import 'model.dart'; +import 'package.dart'; + +class FlutterMarkdownPage extends AppStatefulWidget { + FlutterMarkdownPage({ + super.key, + }); + + final Package package = packageFlutterMarkdown; + + @override + State createState() => _FlutterMarkdownPageState(); +} + +class _FlutterMarkdownPageState extends AppState { + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return BlockLayout( + model: getIt(), + title: widget.package.key, + builder: (context, child, model) { + return SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + BlockInfoPackage(widget.package), + ], + ), + ), + ); + }, + ); + } +} diff --git a/example/lib/packages/freezed/model.dart b/example/lib/packages/freezed/model.dart new file mode 100644 index 0000000..98718c5 --- /dev/null +++ b/example/lib/packages/freezed/model.dart @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/widgets.dart'; +import 'package:scoped_model/scoped_model.dart'; + +/// Model for [FreezedPage] +class FreezedModel extends Model { + /// Get [ScopedModel] + static FreezedModel of(BuildContext context) => + ScopedModel.of(context); +} diff --git a/example/lib/packages/freezed/package.dart b/example/lib/packages/freezed/package.dart new file mode 100644 index 0000000..b94bc2d --- /dev/null +++ b/example/lib/packages/freezed/package.dart @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_page.dart'; +import 'package:get_it/get_it.dart'; + +import 'model.dart'; +import 'page.dart'; + +/// Package values +final packageFreezed = PackagePage( + key: 'freezed', + descEN: ''' + Code generator for data-classes/unions/pattern-matching/cloning. + ''', + descRU: ''' + Генератор кода для классов данных/объединений/сопоставления + с образцом/клонирования. + ''', + version: '2.3.3', + isPlatformDependent: false, + page: () => FreezedPage(), + init: () { + GetIt.instance.registerFactory(() => FreezedModel()); + }, +); diff --git a/example/lib/packages/freezed/page.dart b/example/lib/packages/freezed/page.dart new file mode 100644 index 0000000..0ae75ae --- /dev/null +++ b/example/lib/packages/freezed/page.dart @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +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/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_gen/gen_l10n/app_localizations.dart'; + +import 'model.dart'; +import 'package.dart'; + +class FreezedPage extends AppStatefulWidget { + FreezedPage({ + super.key, + }); + + final Package package = packageFreezed; + + @override + State createState() => _FreezedPageState(); +} + +class _FreezedPageState extends AppState { + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return BlockLayout( + model: getIt(), + title: widget.package.key, + builder: (context, child, model) { + return SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + BlockInfoPackage(widget.package), + ], + ), + ), + ); + }, + ); + } +} diff --git a/example/lib/packages/packages.dart b/example/lib/packages/packages.dart index c383cca..4505280 100644 --- a/example/lib/packages/packages.dart +++ b/example/lib/packages/packages.dart @@ -6,19 +6,27 @@ 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/cached_network_image/package.dart'; import 'package:flutter_example_packages/packages/cupertino_icons/package.dart'; +import 'package:flutter_example_packages/packages/dartz/package.dart'; import 'package:flutter_example_packages/packages/device_info_plus/package.dart'; +import 'package:flutter_example_packages/packages/equatable/package.dart'; import 'package:flutter_example_packages/packages/flutter_cache_manager/package.dart'; import 'package:flutter_example_packages/packages/flutter_local_notifications/package.dart'; +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/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/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'; +import 'package:flutter_example_packages/packages/provider/package.dart'; +import 'package:flutter_example_packages/packages/qr_flutter/package.dart'; +import 'package:flutter_example_packages/packages/rxdart/package.dart'; import 'package:flutter_example_packages/packages/scoped_model/package.dart'; import 'package:flutter_example_packages/packages/shared_preferences/package.dart'; import 'package:flutter_example_packages/packages/sqflite/package.dart'; +import 'package:flutter_example_packages/packages/translator/package.dart'; import 'package:flutter_example_packages/packages/universal_io/package.dart'; import 'package:flutter_example_packages/packages/wakelock/package.dart'; import 'package:flutter_example_packages/packages/xdga_directories/package.dart'; @@ -32,20 +40,28 @@ final packages = [ packageCachedNetworkImage, packageCrypto, packageCupertinoIcons, + packageDartz, packageDeviceInfoPlus, + packageEquatable, packageFlutterCacheManager, packageFlutterKeyboardVisibility, packageFlutterLocalNotifications, + packageFlutterMarkdown, packageFlutterSecureStorage, + packageFreezed, packageGetIt, packageGoogleFonts, packageIntl, packagePackageInfoPlus, packagePathProvider, packagePhotoView, + packageProvider, + packageQrFlutter, + packageRxdart, packageScopedModel, packageSharedPreferences, packageSqflite, + packageTranslator, packageUniversalIO, packageWakelock, packageXdgaDirectories, diff --git a/example/lib/packages/provider/model.dart b/example/lib/packages/provider/model.dart new file mode 100644 index 0000000..adbbfe9 --- /dev/null +++ b/example/lib/packages/provider/model.dart @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/widgets.dart'; +import 'package:scoped_model/scoped_model.dart'; + +/// Model for [ProviderPage] +class ProviderModel extends Model { + /// Get [ScopedModel] + static ProviderModel of(BuildContext context) => + ScopedModel.of(context); +} diff --git a/example/lib/packages/provider/package.dart b/example/lib/packages/provider/package.dart new file mode 100644 index 0000000..845f16e --- /dev/null +++ b/example/lib/packages/provider/package.dart @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_page.dart'; +import 'package:get_it/get_it.dart'; + +import 'model.dart'; +import 'page.dart'; + +/// Package values +final packageProvider = PackagePage( + key: 'provider', + descEN: ''' + A wrapper around InheritedWidget to make them easier to use and more + reusable. + ''', + descRU: ''' + Оболочка вокруг InheritedWidget, чтобы сделать их более простыми в + использовании и более удобными для повторного использования. + ''', + version: '6.0.5', + isPlatformDependent: false, + page: () => ProviderPage(), + init: () { + GetIt.instance.registerFactory(() => ProviderModel()); + }, +); diff --git a/example/lib/packages/provider/page.dart b/example/lib/packages/provider/page.dart new file mode 100644 index 0000000..77b6cb1 --- /dev/null +++ b/example/lib/packages/provider/page.dart @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +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/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_gen/gen_l10n/app_localizations.dart'; + +import 'model.dart'; +import 'package.dart'; + +class ProviderPage extends AppStatefulWidget { + ProviderPage({ + super.key, + }); + + final Package package = packageProvider; + + @override + State createState() => _ProviderPageState(); +} + +class _ProviderPageState extends AppState { + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return BlockLayout( + model: getIt(), + title: widget.package.key, + builder: (context, child, model) { + return SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + BlockInfoPackage(widget.package), + ], + ), + ), + ); + }, + ); + } +} diff --git a/example/lib/packages/qr_flutter/model.dart b/example/lib/packages/qr_flutter/model.dart new file mode 100644 index 0000000..7c4b38f --- /dev/null +++ b/example/lib/packages/qr_flutter/model.dart @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/widgets.dart'; +import 'package:scoped_model/scoped_model.dart'; + +/// Model for [QrFlutterPage] +class QrFlutterModel extends Model { + /// Get [ScopedModel] + static QrFlutterModel of(BuildContext context) => + ScopedModel.of(context); +} diff --git a/example/lib/packages/qr_flutter/package.dart b/example/lib/packages/qr_flutter/package.dart new file mode 100644 index 0000000..59000c0 --- /dev/null +++ b/example/lib/packages/qr_flutter/package.dart @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_page.dart'; +import 'package:get_it/get_it.dart'; + +import 'model.dart'; +import 'page.dart'; + +/// Package values +final packageQrFlutter = PackagePage( + key: 'qr_flutter', + descEN: ''' + QR.Flutter is a Flutter library for simple and fast QR code rendering + via a Widget or custom painter. + ''', + descRU: ''' + ПQR.Flutter — это библиотека Flutter для простого и быстрого рендеринга + QR-кода с помощью виджета или пользовательского рисовальщика. + ''', + version: '4.0.0', + isPlatformDependent: false, + page: () => QrFlutterPage(), + init: () { + GetIt.instance.registerFactory(() => QrFlutterModel()); + }, +); diff --git a/example/lib/packages/qr_flutter/page.dart b/example/lib/packages/qr_flutter/page.dart new file mode 100644 index 0000000..b3ffa70 --- /dev/null +++ b/example/lib/packages/qr_flutter/page.dart @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +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/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_gen/gen_l10n/app_localizations.dart'; + +import 'model.dart'; +import 'package.dart'; + +class QrFlutterPage extends AppStatefulWidget { + QrFlutterPage({ + super.key, + }); + + final Package package = packageQrFlutter; + + @override + State createState() => _QrFlutterPageState(); +} + +class _QrFlutterPageState extends AppState { + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return BlockLayout( + model: getIt(), + title: widget.package.key, + builder: (context, child, model) { + return SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + BlockInfoPackage(widget.package), + ], + ), + ), + ); + }, + ); + } +} diff --git a/example/lib/packages/rxdart/model.dart b/example/lib/packages/rxdart/model.dart new file mode 100644 index 0000000..f86e175 --- /dev/null +++ b/example/lib/packages/rxdart/model.dart @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/widgets.dart'; +import 'package:scoped_model/scoped_model.dart'; + +/// Model for [RxdartPage] +class RxdartModel extends Model { + /// Get [ScopedModel] + static RxdartModel of(BuildContext context) => + ScopedModel.of(context); +} diff --git a/example/lib/packages/rxdart/package.dart b/example/lib/packages/rxdart/package.dart new file mode 100644 index 0000000..861c863 --- /dev/null +++ b/example/lib/packages/rxdart/package.dart @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_page.dart'; +import 'package:get_it/get_it.dart'; + +import 'model.dart'; +import 'page.dart'; + +/// Package values +final packageRxdart = PackagePage( + key: 'rxdart', + descEN: ''' + RxDart extends the capabilities of Dart Streams and StreamControllers. + ''', + descRU: ''' + RxDart расширяет возможности Dart Streams и StreamControllers. + ''', + version: '0.27.7', + isPlatformDependent: false, + page: () => RxdartPage(), + init: () { + GetIt.instance.registerFactory(() => RxdartModel()); + }, +); diff --git a/example/lib/packages/rxdart/page.dart b/example/lib/packages/rxdart/page.dart new file mode 100644 index 0000000..d695c7b --- /dev/null +++ b/example/lib/packages/rxdart/page.dart @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +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/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_gen/gen_l10n/app_localizations.dart'; + +import 'model.dart'; +import 'package.dart'; + +class RxdartPage extends AppStatefulWidget { + RxdartPage({ + super.key, + }); + + final Package package = packageRxdart; + + @override + State createState() => _RxdartPageState(); +} + +class _RxdartPageState extends AppState { + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return BlockLayout( + model: getIt(), + title: widget.package.key, + builder: (context, child, model) { + return SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + BlockInfoPackage(widget.package), + ], + ), + ), + ); + }, + ); + } +} diff --git a/example/lib/packages/translator/model.dart b/example/lib/packages/translator/model.dart new file mode 100644 index 0000000..f35febf --- /dev/null +++ b/example/lib/packages/translator/model.dart @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/widgets.dart'; +import 'package:scoped_model/scoped_model.dart'; + +/// Model for [TranslatorPage] +class TranslatorModel extends Model { + /// Get [ScopedModel] + static TranslatorModel of(BuildContext context) => + ScopedModel.of(context); +} diff --git a/example/lib/packages/translator/package.dart b/example/lib/packages/translator/package.dart new file mode 100644 index 0000000..e60879c --- /dev/null +++ b/example/lib/packages/translator/package.dart @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_page.dart'; +import 'package:get_it/get_it.dart'; + +import 'model.dart'; +import 'page.dart'; + +/// Package values +final packageTranslator = PackagePage( + key: 'translator', + descEN: ''' + Free Google Translate API for Dart. + ''', + descRU: ''' + Бесплатный API Google Translate для Dart. + ''', + version: '0.1.7', + isPlatformDependent: false, + page: () => TranslatorPage(), + init: () { + GetIt.instance.registerFactory(() => TranslatorModel()); + }, +); diff --git a/example/lib/packages/translator/page.dart b/example/lib/packages/translator/page.dart new file mode 100644 index 0000000..989e9d1 --- /dev/null +++ b/example/lib/packages/translator/page.dart @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +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/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_gen/gen_l10n/app_localizations.dart'; + +import 'model.dart'; +import 'package.dart'; + +class TranslatorPage extends AppStatefulWidget { + TranslatorPage({ + super.key, + }); + + final Package package = packageTranslator; + + @override + State createState() => _TranslatorPageState(); +} + +class _TranslatorPageState extends AppState { + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return BlockLayout( + model: getIt(), + title: widget.package.key, + builder: (context, child, model) { + return SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + BlockInfoPackage(widget.package), + ], + ), + ), + ); + }, + ); + } +} diff --git a/example/pubspec.lock b/example/pubspec.lock index 481ffbd..86f1094 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -48,7 +48,7 @@ packages: description: path: "packages/battery_plus/battery_plus_aurora" ref: flutter_example_packages - resolved-ref: "024eb82387b3574659d1c75034dc96fb2cec5f6e" + resolved-ref: b2be3b38dcf55c327ebcfb5cb887993cb247dcff url: "git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git" source: git version: "0.0.1" @@ -206,6 +206,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.2.5" + dartz: + dependency: "direct main" + description: + name: dartz + url: "https://pub.dartlang.org" + source: hosted + version: "0.10.1" dbus: dependency: transitive description: @@ -225,7 +232,7 @@ packages: description: path: "packages/device_info_plus/device_info_plus_aurora" ref: flutter_example_packages - resolved-ref: "024eb82387b3574659d1c75034dc96fb2cec5f6e" + resolved-ref: b2be3b38dcf55c327ebcfb5cb887993cb247dcff url: "git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git" source: git version: "0.0.1" @@ -243,6 +250,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "5.0.1" + equatable: + dependency: "direct main" + description: + name: equatable + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.5" fake_async: dependency: transitive description: @@ -302,7 +316,7 @@ packages: description: path: "packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora" ref: flutter_example_packages - resolved-ref: "024eb82387b3574659d1c75034dc96fb2cec5f6e" + resolved-ref: b2be3b38dcf55c327ebcfb5cb887993cb247dcff url: "git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git" source: git version: "0.0.1" @@ -360,7 +374,7 @@ packages: description: path: "packages/flutter_local_notifications/flutter_local_notifications_aurora" ref: flutter_example_packages - resolved-ref: "024eb82387b3574659d1c75034dc96fb2cec5f6e" + resolved-ref: b2be3b38dcf55c327ebcfb5cb887993cb247dcff url: "git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git" source: git version: "0.0.1" @@ -383,6 +397,13 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_markdown: + dependency: "direct main" + description: + name: flutter_markdown + url: "https://pub.dartlang.org" + source: hosted + version: "0.6.15" flutter_secure_storage: dependency: "direct main" description: @@ -395,7 +416,7 @@ packages: description: path: "packages/flutter_secure_storage/flutter_secure_storage_aurora" ref: flutter_example_packages - resolved-ref: "024eb82387b3574659d1c75034dc96fb2cec5f6e" + resolved-ref: b2be3b38dcf55c327ebcfb5cb887993cb247dcff url: "git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git" source: git version: "0.0.1" @@ -444,6 +465,20 @@ packages: description: flutter source: sdk version: "0.0.0" + freezed: + dependency: "direct main" + description: + name: freezed + url: "https://pub.dartlang.org" + source: hosted + version: "2.3.3" + freezed_annotation: + dependency: transitive + description: + name: freezed_annotation + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.0" frontend_server_client: dependency: transitive description: @@ -542,6 +577,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.1" + markdown: + dependency: transitive + description: + name: markdown + url: "https://pub.dartlang.org" + source: hosted + version: "7.0.1" matcher: dependency: transitive description: @@ -570,6 +612,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.4" + nested: + dependency: transitive + description: + name: nested + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" octo_image: dependency: transitive description: @@ -596,7 +645,7 @@ packages: description: path: "packages/package_info_plus/package_info_plus_aurora" ref: flutter_example_packages - resolved-ref: "024eb82387b3574659d1c75034dc96fb2cec5f6e" + resolved-ref: b2be3b38dcf55c327ebcfb5cb887993cb247dcff url: "git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git" source: git version: "0.0.1" @@ -633,7 +682,7 @@ packages: description: path: "packages/path_provider/path_provider_aurora" ref: flutter_example_packages - resolved-ref: "024eb82387b3574659d1c75034dc96fb2cec5f6e" + resolved-ref: b2be3b38dcf55c327ebcfb5cb887993cb247dcff url: "git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git" source: git version: "0.0.1" @@ -714,6 +763,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "4.2.4" + provider: + dependency: "direct main" + description: + name: provider + url: "https://pub.dartlang.org" + source: hosted + version: "6.0.5" pub_semver: dependency: transitive description: @@ -728,8 +784,22 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.2.3" - rxdart: + qr: dependency: transitive + description: + name: qr + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + qr_flutter: + dependency: "direct main" + description: + name: qr_flutter + url: "https://pub.dartlang.org" + source: hosted + version: "4.0.0" + rxdart: + dependency: "direct main" description: name: rxdart url: "https://pub.dartlang.org" @@ -761,7 +831,7 @@ packages: description: path: "packages/shared_preferences/shared_preferences_aurora" ref: flutter_example_packages - resolved-ref: "024eb82387b3574659d1c75034dc96fb2cec5f6e" + resolved-ref: b2be3b38dcf55c327ebcfb5cb887993cb247dcff url: "git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git" source: git version: "0.0.1" @@ -819,6 +889,13 @@ packages: description: flutter source: sdk version: "0.0.99" + source_gen: + dependency: transitive + description: + name: source_gen + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.2" source_span: dependency: transitive description: @@ -903,6 +980,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.1" + translator: + dependency: "direct main" + description: + name: translator + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.7" typed_data: dependency: transitive description: @@ -950,7 +1034,7 @@ packages: description: path: "packages/wakelock/wakelock_aurora" ref: flutter_example_packages - resolved-ref: "024eb82387b3574659d1c75034dc96fb2cec5f6e" + resolved-ref: b2be3b38dcf55c327ebcfb5cb887993cb247dcff url: "git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git" source: git version: "0.0.1" @@ -1015,7 +1099,7 @@ packages: description: path: "packages/xdga_directories" ref: flutter_example_packages - resolved-ref: "024eb82387b3574659d1c75034dc96fb2cec5f6e" + resolved-ref: b2be3b38dcf55c327ebcfb5cb887993cb247dcff url: "git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git" source: git version: "0.0.1" diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 0e7d645..af63cbf 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -36,6 +36,22 @@ dependencies: flutter_cache_manager: ^3.3.0 ## https://pub.dev/packages/photo_view 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 + equatable: ^2.0.5 + ## https://pub.dev/packages/qr_flutter + qr_flutter: ^4.0.0 + ## https://pub.dev/packages/rxdart + rxdart: ^0.27.7 + ## https://pub.dev/packages/translator + translator: ^0.1.7 + ## https://pub.dev/packages/flutter_markdown + flutter_markdown: ^0.6.15 ## https://os-git.omprussia.ru/non-oss/flutter/flutter-plugins/-/tree/master/packages/xdga_directories xdga_directories: