27 changed files with 865 additions and 11 deletions
@ -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<DartzModel>(context); |
||||||
|
} |
@ -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>(() => DartzModel()); |
||||||
|
}, |
||||||
|
); |
@ -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<DartzPage> createState() => _DartzPageState(); |
||||||
|
} |
||||||
|
|
||||||
|
class _DartzPageState extends AppState<DartzPage> { |
||||||
|
@override |
||||||
|
Widget buildWide( |
||||||
|
BuildContext context, |
||||||
|
MediaQueryData media, |
||||||
|
AppLocalizations l10n, |
||||||
|
) { |
||||||
|
return BlockLayout<DartzModel>( |
||||||
|
model: getIt<DartzModel>(), |
||||||
|
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), |
||||||
|
], |
||||||
|
), |
||||||
|
), |
||||||
|
); |
||||||
|
}, |
||||||
|
); |
||||||
|
} |
||||||
|
} |
@ -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<EquatableModel>(context); |
||||||
|
} |
@ -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>(() => EquatableModel()); |
||||||
|
}, |
||||||
|
); |
@ -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<EquatablePage> createState() => _EquatablePageState(); |
||||||
|
} |
||||||
|
|
||||||
|
class _EquatablePageState extends AppState<EquatablePage> { |
||||||
|
@override |
||||||
|
Widget buildWide( |
||||||
|
BuildContext context, |
||||||
|
MediaQueryData media, |
||||||
|
AppLocalizations l10n, |
||||||
|
) { |
||||||
|
return BlockLayout<EquatableModel>( |
||||||
|
model: getIt<EquatableModel>(), |
||||||
|
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), |
||||||
|
], |
||||||
|
), |
||||||
|
), |
||||||
|
); |
||||||
|
}, |
||||||
|
); |
||||||
|
} |
||||||
|
} |
@ -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<FlutterMarkdownModel>(context); |
||||||
|
} |
@ -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>(() => FlutterMarkdownModel()); |
||||||
|
}, |
||||||
|
); |
@ -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<FlutterMarkdownPage> createState() => _FlutterMarkdownPageState(); |
||||||
|
} |
||||||
|
|
||||||
|
class _FlutterMarkdownPageState extends AppState<FlutterMarkdownPage> { |
||||||
|
@override |
||||||
|
Widget buildWide( |
||||||
|
BuildContext context, |
||||||
|
MediaQueryData media, |
||||||
|
AppLocalizations l10n, |
||||||
|
) { |
||||||
|
return BlockLayout<FlutterMarkdownModel>( |
||||||
|
model: getIt<FlutterMarkdownModel>(), |
||||||
|
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), |
||||||
|
], |
||||||
|
), |
||||||
|
), |
||||||
|
); |
||||||
|
}, |
||||||
|
); |
||||||
|
} |
||||||
|
} |
@ -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<FreezedModel>(context); |
||||||
|
} |
@ -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>(() => FreezedModel()); |
||||||
|
}, |
||||||
|
); |
@ -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<FreezedPage> createState() => _FreezedPageState(); |
||||||
|
} |
||||||
|
|
||||||
|
class _FreezedPageState extends AppState<FreezedPage> { |
||||||
|
@override |
||||||
|
Widget buildWide( |
||||||
|
BuildContext context, |
||||||
|
MediaQueryData media, |
||||||
|
AppLocalizations l10n, |
||||||
|
) { |
||||||
|
return BlockLayout<FreezedModel>( |
||||||
|
model: getIt<FreezedModel>(), |
||||||
|
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), |
||||||
|
], |
||||||
|
), |
||||||
|
), |
||||||
|
); |
||||||
|
}, |
||||||
|
); |
||||||
|
} |
||||||
|
} |
@ -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<ProviderModel>(context); |
||||||
|
} |
@ -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>(() => ProviderModel()); |
||||||
|
}, |
||||||
|
); |
@ -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<ProviderPage> createState() => _ProviderPageState(); |
||||||
|
} |
||||||
|
|
||||||
|
class _ProviderPageState extends AppState<ProviderPage> { |
||||||
|
@override |
||||||
|
Widget buildWide( |
||||||
|
BuildContext context, |
||||||
|
MediaQueryData media, |
||||||
|
AppLocalizations l10n, |
||||||
|
) { |
||||||
|
return BlockLayout<ProviderModel>( |
||||||
|
model: getIt<ProviderModel>(), |
||||||
|
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), |
||||||
|
], |
||||||
|
), |
||||||
|
), |
||||||
|
); |
||||||
|
}, |
||||||
|
); |
||||||
|
} |
||||||
|
} |
@ -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<QrFlutterModel>(context); |
||||||
|
} |
@ -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>(() => QrFlutterModel()); |
||||||
|
}, |
||||||
|
); |
@ -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<QrFlutterPage> createState() => _QrFlutterPageState(); |
||||||
|
} |
||||||
|
|
||||||
|
class _QrFlutterPageState extends AppState<QrFlutterPage> { |
||||||
|
@override |
||||||
|
Widget buildWide( |
||||||
|
BuildContext context, |
||||||
|
MediaQueryData media, |
||||||
|
AppLocalizations l10n, |
||||||
|
) { |
||||||
|
return BlockLayout<QrFlutterModel>( |
||||||
|
model: getIt<QrFlutterModel>(), |
||||||
|
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), |
||||||
|
], |
||||||
|
), |
||||||
|
), |
||||||
|
); |
||||||
|
}, |
||||||
|
); |
||||||
|
} |
||||||
|
} |
@ -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<RxdartModel>(context); |
||||||
|
} |
@ -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>(() => RxdartModel()); |
||||||
|
}, |
||||||
|
); |
@ -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<RxdartPage> createState() => _RxdartPageState(); |
||||||
|
} |
||||||
|
|
||||||
|
class _RxdartPageState extends AppState<RxdartPage> { |
||||||
|
@override |
||||||
|
Widget buildWide( |
||||||
|
BuildContext context, |
||||||
|
MediaQueryData media, |
||||||
|
AppLocalizations l10n, |
||||||
|
) { |
||||||
|
return BlockLayout<RxdartModel>( |
||||||
|
model: getIt<RxdartModel>(), |
||||||
|
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), |
||||||
|
], |
||||||
|
), |
||||||
|
), |
||||||
|
); |
||||||
|
}, |
||||||
|
); |
||||||
|
} |
||||||
|
} |
@ -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<TranslatorModel>(context); |
||||||
|
} |
@ -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>(() => TranslatorModel()); |
||||||
|
}, |
||||||
|
); |
@ -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<TranslatorPage> createState() => _TranslatorPageState(); |
||||||
|
} |
||||||
|
|
||||||
|
class _TranslatorPageState extends AppState<TranslatorPage> { |
||||||
|
@override |
||||||
|
Widget buildWide( |
||||||
|
BuildContext context, |
||||||
|
MediaQueryData media, |
||||||
|
AppLocalizations l10n, |
||||||
|
) { |
||||||
|
return BlockLayout<TranslatorModel>( |
||||||
|
model: getIt<TranslatorModel>(), |
||||||
|
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), |
||||||
|
], |
||||||
|
), |
||||||
|
), |
||||||
|
); |
||||||
|
}, |
||||||
|
); |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue