Browse Source

[flutter_example_packages] Refactoring

merge-requests/21/head
Vitaliy Zarubin 2 years ago
parent
commit
e90db9bc9b
  1. 36
      example/lib/l10n/app_en.arb
  2. 36
      example/lib/l10n/app_ru.arb
  3. 2
      example/lib/packages/battery_plus/model.dart
  4. 77
      example/lib/packages/battery_plus/page.dart
  5. 9
      example/lib/packages/cached_network_image/model.dart
  6. 34
      example/lib/packages/cached_network_image/page.dart
  7. 9
      example/lib/packages/device_info_plus/model.dart
  8. 34
      example/lib/packages/device_info_plus/page.dart
  9. 9
      example/lib/packages/flutter_cache_manager/model.dart
  10. 34
      example/lib/packages/flutter_cache_manager/page.dart
  11. 9
      example/lib/packages/flutter_local_notifications/model.dart
  12. 34
      example/lib/packages/flutter_local_notifications/page.dart
  13. 9
      example/lib/packages/flutter_secure_storage/model.dart
  14. 34
      example/lib/packages/flutter_secure_storage/page.dart
  15. 9
      example/lib/packages/package_info_plus/model.dart
  16. 34
      example/lib/packages/package_info_plus/page.dart
  17. 9
      example/lib/packages/path_provider/model.dart
  18. 34
      example/lib/packages/path_provider/page.dart
  19. 9
      example/lib/packages/shared_preferences/model.dart
  20. 34
      example/lib/packages/shared_preferences/page.dart
  21. 9
      example/lib/packages/wakelock/model.dart
  22. 34
      example/lib/packages/wakelock/page.dart
  23. 2
      example/lib/packages/xdga_directories/model.dart
  24. 107
      example/lib/packages/xdga_directories/page.dart
  25. 5
      example/lib/widgets/layouts/block_layout.dart
  26. 28
      example/pubspec.lock
  27. 12
      example/pubspec.yaml

36
example/lib/l10n/app_en.arb

@ -9,6 +9,42 @@
"batteryPlusTitleBatteryStateLive": "Battery State 'Live'", "batteryPlusTitleBatteryStateLive": "Battery State 'Live'",
"batteryPlusDescBatteryStateLive": "Battery change state stream", "batteryPlusDescBatteryStateLive": "Battery change state stream",
"@_CACHED_NETWORK_IMAGE": {},
"cachedNetworkImageTitle": "Title",
"cachedNetworkImageDesc": "Desc",
"@_DEVICE_INFO_PLUS": {},
"deviceInfoPlusTitle": "Title",
"deviceInfoPlusDesc": "Desc",
"@_FLUTTER_CACHE_MANAGER": {},
"flutterCacheManagerTitle": "Title",
"flutterCacheManagerDesc": "Desc",
"@_FLUTTER_LOCAL_NOTIFICATIONS": {},
"flutterLocalNotificationsTitle": "Title",
"flutterLocalNotificationsDesc": "Desc",
"@_FLUTTER_SECURE_STORAGE": {},
"flutterSecureStorageTitle": "Title",
"flutterSecureStorageDesc": "Desc",
"@_PACKAGE_INFO_PLUS": {},
"packageInfoPlusTitle": "Title",
"packageInfoPlusDesc": "Desc",
"@_PATH_PROVIDER": {},
"pathProviderTitle": "Title",
"pathProviderDesc": "Desc",
"@_SHARED_PREFERENCES": {},
"sharedPreferencesTitle": "Title",
"sharedPreferencesDesc": "Desc",
"@_WAKELOCK": {},
"wakelockTitle": "Title",
"wakelockDesc": "Desc",
"@_XDGA_DIRECTORIES": {}, "@_XDGA_DIRECTORIES": {},
"xdgaDirectoriesTitleCacheLocation": "App Data Location", "xdgaDirectoriesTitleCacheLocation": "App Data Location",
"xdgaDirectoriesDescCacheLocation": "Directory location where persistent application data can be stored.", "xdgaDirectoriesDescCacheLocation": "Directory location where persistent application data can be stored.",

36
example/lib/l10n/app_ru.arb

@ -9,6 +9,42 @@
"batteryPlusTitleBatteryStateLive": "Состояние батареи 'Live'", "batteryPlusTitleBatteryStateLive": "Состояние батареи 'Live'",
"batteryPlusDescBatteryStateLive": "Изменение состояния батареи", "batteryPlusDescBatteryStateLive": "Изменение состояния батареи",
"@_CACHED_NETWORK_IMAGE": {},
"cachedNetworkImageTitle": "Заголовок",
"cachedNetworkImageDesc": "Описание",
"@_DEVICE_INFO_PLUS": {},
"deviceInfoPlusTitle": "Заголовок",
"deviceInfoPlusDesc": "Описание",
"@_FLUTTER_CACHE_MANAGER": {},
"flutterCacheManagerTitle": "Заголовок",
"flutterCacheManagerDesc": "Описание",
"@_FLUTTER_LOCAL_NOTIFICATIONS": {},
"flutterLocalNotificationsTitle": "Заголовок",
"flutterLocalNotificationsDesc": "Описание",
"@_FLUTTER_SECURE_STORAGE": {},
"flutterSecureStorageTitle": "Заголовок",
"flutterSecureStorageDesc": "Описание",
"@_PACKAGE_INFO_PLUS": {},
"packageInfoPlusTitle": "Заголовок",
"packageInfoPlusDesc": "Описание",
"@_PATH_PROVIDER": {},
"pathProviderTitle": "Заголовок",
"pathProviderDesc": "Описание",
"@_SHARED_PREFERENCES": {},
"sharedPreferencesTitle": "Заголовок",
"sharedPreferencesDesc": "Описание",
"@_WAKELOCK": {},
"wakelockTitle": "Заголовок",
"wakelockDesc": "Описание",
"@_XDGA_DIRECTORIES": {}, "@_XDGA_DIRECTORIES": {},
"xdgaDirectoriesTitleCacheLocation": "App Data Location", "xdgaDirectoriesTitleCacheLocation": "App Data Location",
"xdgaDirectoriesDescCacheLocation": "Расположение каталога, в котором могут храниться постоянные данные приложения.", "xdgaDirectoriesDescCacheLocation": "Расположение каталога, в котором могут храниться постоянные данные приложения.",

2
example/lib/packages/battery_plus/model.dart

@ -15,7 +15,7 @@ class BatteryPlusModel extends Model {
/// Public error /// Public error
String? get error => _error; String? get error => _error;
/// Public error /// Public is error
bool get isError => _error != null; bool get isError => _error != null;
/// Get battery level in percent 0-100 /// Get battery level in percent 0-100

77
example/lib/packages/battery_plus/page.dart

@ -31,43 +31,46 @@ class _BatteryPlusPageState extends AppState<BatteryPlusPage> {
title: widget.package.key, title: widget.package.key,
builder: (context, child, model) { builder: (context, child, model) {
return SingleChildScrollView( return SingleChildScrollView(
child: Column( child: Padding(
crossAxisAlignment: CrossAxisAlignment.start, padding: const EdgeInsets.all(20),
children: [ child: Column(
BlockInfoPackage(widget.package), crossAxisAlignment: CrossAxisAlignment.start,
BlockAlert(model.error), children: [
if (!model.isError) BlockInfoPackage(widget.package),
Column( BlockAlert(model.error),
crossAxisAlignment: CrossAxisAlignment.start, if (!model.isError)
children: [ Column(
BlockItem( crossAxisAlignment: CrossAxisAlignment.start,
title: l10n.batteryPlusTitleBatteryLevel, children: [
desc: l10n.batteryPlusDescBatteryLevel, BlockItem(
future: model.getBatteryLevel(), title: l10n.batteryPlusTitleBatteryLevel,
builder: (value) => '$value%', desc: l10n.batteryPlusDescBatteryLevel,
), future: model.getBatteryLevel(),
BlockItem( builder: (value) => '$value%',
title: l10n.batteryPlusTitleBatteryState, ),
desc: l10n.batteryPlusDescBatteryState, BlockItem(
future: model.getBatteryState(), title: l10n.batteryPlusTitleBatteryState,
builder: (value) => desc: l10n.batteryPlusDescBatteryState,
value.toString().split('.').last.toUpperCase(), future: model.getBatteryState(),
), builder: (value) =>
BlockItem( value.toString().split('.').last.toUpperCase(),
title: l10n.batteryPlusTitleBatterySaveMode, ),
desc: l10n.batteryPlusDescBatterySaveMode, BlockItem(
future: model.isInBatterySaveMode(), title: l10n.batteryPlusTitleBatterySaveMode,
), desc: l10n.batteryPlusDescBatterySaveMode,
BlockItem( future: model.isInBatterySaveMode(),
title: l10n.batteryPlusTitleBatteryStateLive, ),
desc: l10n.batteryPlusDescBatteryStateLive, BlockItem(
stream: model.onBatteryStateChanged(), title: l10n.batteryPlusTitleBatteryStateLive,
builder: (value) => desc: l10n.batteryPlusDescBatteryStateLive,
value.toString().split('.').last.toUpperCase(), stream: model.onBatteryStateChanged(),
), builder: (value) =>
], value.toString().split('.').last.toUpperCase(),
), ),
], ],
),
],
),
), ),
); );
}, },

9
example/lib/packages/cached_network_image/model.dart

@ -5,4 +5,13 @@ import 'package:scoped_model/scoped_model.dart';
class CachedNetworkImageModel extends Model { class CachedNetworkImageModel extends Model {
/// Get [ScopedModel] /// Get [ScopedModel]
static CachedNetworkImageModel of(BuildContext context) => ScopedModel.of<CachedNetworkImageModel>(context); static CachedNetworkImageModel of(BuildContext context) => ScopedModel.of<CachedNetworkImageModel>(context);
/// Error
String? _error;
/// Public error
String? get error => _error;
/// Public is error
bool get isError => _error != null;
} }

34
example/lib/packages/cached_network_image/page.dart

@ -3,6 +3,9 @@ import 'package:flutter_example_packages/base/package/package.dart';
import 'package:flutter_example_packages/packages/cached_network_image/model.dart'; import 'package:flutter_example_packages/packages/cached_network_image/model.dart';
import 'package:flutter_example_packages/packages/cached_network_image/package.dart'; import 'package:flutter_example_packages/packages/cached_network_image/package.dart';
import 'package:flutter_example_packages/widgets/base/export.dart'; import 'package:flutter_example_packages/widgets/base/export.dart';
import 'package:flutter_example_packages/widgets/blocks/block_alert.dart';
import 'package:flutter_example_packages/widgets/blocks/block_info_package.dart';
import 'package:flutter_example_packages/widgets/blocks/block_item.dart';
import 'package:flutter_example_packages/widgets/layouts/block_layout.dart'; import 'package:flutter_example_packages/widgets/layouts/block_layout.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart';
@ -25,9 +28,32 @@ class _CachedNetworkImagePageState extends AppState<CachedNetworkImagePage> {
AppLocalizations l10n, AppLocalizations l10n,
) { ) {
return BlockLayout<CachedNetworkImageModel>( return BlockLayout<CachedNetworkImageModel>(
title: widget.package.key, title: widget.package.key,
builder: (context, child, model) { builder: (context, child, model) {
return Text(widget.package.desc); return SingleChildScrollView(
}); child: Padding(
padding: const EdgeInsets.all(20),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
BlockInfoPackage(widget.package),
BlockAlert(model.error),
if (!model.isError)
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
BlockItem(
title: l10n.cachedNetworkImageTitle,
desc: l10n.cachedNetworkImageDesc,
value: null,
),
],
),
],
),
),
);
},
);
} }
} }

9
example/lib/packages/device_info_plus/model.dart

@ -5,4 +5,13 @@ import 'package:scoped_model/scoped_model.dart';
class DeviceInfoPlusModel extends Model { class DeviceInfoPlusModel extends Model {
/// Get [ScopedModel] /// Get [ScopedModel]
static DeviceInfoPlusModel of(BuildContext context) => ScopedModel.of<DeviceInfoPlusModel>(context); static DeviceInfoPlusModel of(BuildContext context) => ScopedModel.of<DeviceInfoPlusModel>(context);
/// Error
String? _error;
/// Public error
String? get error => _error;
/// Public is error
bool get isError => _error != null;
} }

34
example/lib/packages/device_info_plus/page.dart

@ -3,6 +3,9 @@ import 'package:flutter_example_packages/base/package/package.dart';
import 'package:flutter_example_packages/packages/device_info_plus/model.dart'; import 'package:flutter_example_packages/packages/device_info_plus/model.dart';
import 'package:flutter_example_packages/packages/device_info_plus/package.dart'; import 'package:flutter_example_packages/packages/device_info_plus/package.dart';
import 'package:flutter_example_packages/widgets/base/export.dart'; import 'package:flutter_example_packages/widgets/base/export.dart';
import 'package:flutter_example_packages/widgets/blocks/block_alert.dart';
import 'package:flutter_example_packages/widgets/blocks/block_info_package.dart';
import 'package:flutter_example_packages/widgets/blocks/block_item.dart';
import 'package:flutter_example_packages/widgets/layouts/block_layout.dart'; import 'package:flutter_example_packages/widgets/layouts/block_layout.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart';
@ -25,9 +28,32 @@ class _DeviceInfoPlusPageState extends AppState<DeviceInfoPlusPage> {
AppLocalizations l10n, AppLocalizations l10n,
) { ) {
return BlockLayout<DeviceInfoPlusModel>( return BlockLayout<DeviceInfoPlusModel>(
title: widget.package.key, title: widget.package.key,
builder: (context, child, model) { builder: (context, child, model) {
return Text(widget.package.desc); return SingleChildScrollView(
}); child: Padding(
padding: const EdgeInsets.all(20),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
BlockInfoPackage(widget.package),
BlockAlert(model.error),
if (!model.isError)
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
BlockItem(
title: l10n.deviceInfoPlusTitle,
desc: l10n.deviceInfoPlusDesc,
value: null,
),
],
),
],
),
),
);
},
);
} }
} }

9
example/lib/packages/flutter_cache_manager/model.dart

@ -5,4 +5,13 @@ import 'package:scoped_model/scoped_model.dart';
class FlutterCacheManagerModel extends Model { class FlutterCacheManagerModel extends Model {
/// Get [ScopedModel] /// Get [ScopedModel]
static FlutterCacheManagerModel of(BuildContext context) => ScopedModel.of<FlutterCacheManagerModel>(context); static FlutterCacheManagerModel of(BuildContext context) => ScopedModel.of<FlutterCacheManagerModel>(context);
/// Error
String? _error;
/// Public error
String? get error => _error;
/// Public is error
bool get isError => _error != null;
} }

34
example/lib/packages/flutter_cache_manager/page.dart

@ -3,6 +3,9 @@ import 'package:flutter_example_packages/base/package/package.dart';
import 'package:flutter_example_packages/packages/flutter_cache_manager/model.dart'; import 'package:flutter_example_packages/packages/flutter_cache_manager/model.dart';
import 'package:flutter_example_packages/packages/flutter_cache_manager/package.dart'; import 'package:flutter_example_packages/packages/flutter_cache_manager/package.dart';
import 'package:flutter_example_packages/widgets/base/export.dart'; import 'package:flutter_example_packages/widgets/base/export.dart';
import 'package:flutter_example_packages/widgets/blocks/block_alert.dart';
import 'package:flutter_example_packages/widgets/blocks/block_info_package.dart';
import 'package:flutter_example_packages/widgets/blocks/block_item.dart';
import 'package:flutter_example_packages/widgets/layouts/block_layout.dart'; import 'package:flutter_example_packages/widgets/layouts/block_layout.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart';
@ -26,9 +29,32 @@ class _FlutterCacheManagerPageState extends AppState<FlutterCacheManagerPage> {
AppLocalizations l10n, AppLocalizations l10n,
) { ) {
return BlockLayout<FlutterCacheManagerModel>( return BlockLayout<FlutterCacheManagerModel>(
title: widget.package.key, title: widget.package.key,
builder: (context, child, model) { builder: (context, child, model) {
return Text(widget.package.desc); return SingleChildScrollView(
}); child: Padding(
padding: const EdgeInsets.all(20),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
BlockInfoPackage(widget.package),
BlockAlert(model.error),
if (!model.isError)
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
BlockItem(
title: l10n.flutterCacheManagerTitle,
desc: l10n.flutterCacheManagerDesc,
value: null,
),
],
),
],
),
),
);
},
);
} }
} }

9
example/lib/packages/flutter_local_notifications/model.dart

@ -5,4 +5,13 @@ import 'package:scoped_model/scoped_model.dart';
class FlutterLocalNotificationsModel extends Model { class FlutterLocalNotificationsModel extends Model {
/// Get [ScopedModel] /// Get [ScopedModel]
static FlutterLocalNotificationsModel of(BuildContext context) => ScopedModel.of<FlutterLocalNotificationsModel>(context); static FlutterLocalNotificationsModel of(BuildContext context) => ScopedModel.of<FlutterLocalNotificationsModel>(context);
/// Error
String? _error;
/// Public error
String? get error => _error;
/// Public is error
bool get isError => _error != null;
} }

34
example/lib/packages/flutter_local_notifications/page.dart

@ -3,6 +3,9 @@ import 'package:flutter_example_packages/base/package/package.dart';
import 'package:flutter_example_packages/packages/flutter_local_notifications/model.dart'; import 'package:flutter_example_packages/packages/flutter_local_notifications/model.dart';
import 'package:flutter_example_packages/packages/flutter_local_notifications/package.dart'; import 'package:flutter_example_packages/packages/flutter_local_notifications/package.dart';
import 'package:flutter_example_packages/widgets/base/export.dart'; import 'package:flutter_example_packages/widgets/base/export.dart';
import 'package:flutter_example_packages/widgets/blocks/block_alert.dart';
import 'package:flutter_example_packages/widgets/blocks/block_info_package.dart';
import 'package:flutter_example_packages/widgets/blocks/block_item.dart';
import 'package:flutter_example_packages/widgets/layouts/block_layout.dart'; import 'package:flutter_example_packages/widgets/layouts/block_layout.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart';
@ -27,9 +30,32 @@ class _FlutterLocalNotificationsPageState
AppLocalizations l10n, AppLocalizations l10n,
) { ) {
return BlockLayout<FlutterLocalNotificationsModel>( return BlockLayout<FlutterLocalNotificationsModel>(
title: widget.package.key, title: widget.package.key,
builder: (context, child, model) { builder: (context, child, model) {
return Text(widget.package.desc); return SingleChildScrollView(
}); child: Padding(
padding: const EdgeInsets.all(20),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
BlockInfoPackage(widget.package),
BlockAlert(model.error),
if (!model.isError)
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
BlockItem(
title: l10n.flutterLocalNotificationsTitle,
desc: l10n.flutterLocalNotificationsDesc,
value: null,
),
],
),
],
),
),
);
},
);
} }
} }

9
example/lib/packages/flutter_secure_storage/model.dart

@ -5,4 +5,13 @@ import 'package:scoped_model/scoped_model.dart';
class FlutterSecureStorageModel extends Model { class FlutterSecureStorageModel extends Model {
/// Get [ScopedModel] /// Get [ScopedModel]
static FlutterSecureStorageModel of(BuildContext context) => ScopedModel.of<FlutterSecureStorageModel>(context); static FlutterSecureStorageModel of(BuildContext context) => ScopedModel.of<FlutterSecureStorageModel>(context);
/// Error
String? _error;
/// Public error
String? get error => _error;
/// Public is error
bool get isError => _error != null;
} }

34
example/lib/packages/flutter_secure_storage/page.dart

@ -3,6 +3,9 @@ import 'package:flutter_example_packages/base/package/package.dart';
import 'package:flutter_example_packages/packages/flutter_secure_storage/model.dart'; import 'package:flutter_example_packages/packages/flutter_secure_storage/model.dart';
import 'package:flutter_example_packages/packages/flutter_secure_storage/package.dart'; import 'package:flutter_example_packages/packages/flutter_secure_storage/package.dart';
import 'package:flutter_example_packages/widgets/base/export.dart'; import 'package:flutter_example_packages/widgets/base/export.dart';
import 'package:flutter_example_packages/widgets/blocks/block_alert.dart';
import 'package:flutter_example_packages/widgets/blocks/block_info_package.dart';
import 'package:flutter_example_packages/widgets/blocks/block_item.dart';
import 'package:flutter_example_packages/widgets/layouts/block_layout.dart'; import 'package:flutter_example_packages/widgets/layouts/block_layout.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart';
@ -27,9 +30,32 @@ class _FlutterSecureStoragePageState
AppLocalizations l10n, AppLocalizations l10n,
) { ) {
return BlockLayout<FlutterSecureStorageModel>( return BlockLayout<FlutterSecureStorageModel>(
title: widget.package.key, title: widget.package.key,
builder: (context, child, model) { builder: (context, child, model) {
return Text(widget.package.desc); return SingleChildScrollView(
}); child: Padding(
padding: const EdgeInsets.all(20),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
BlockInfoPackage(widget.package),
BlockAlert(model.error),
if (!model.isError)
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
BlockItem(
title: l10n.flutterSecureStorageTitle,
desc: l10n.flutterSecureStorageDesc,
value: null,
),
],
),
],
),
),
);
},
);
} }
} }

9
example/lib/packages/package_info_plus/model.dart

@ -5,4 +5,13 @@ import 'package:scoped_model/scoped_model.dart';
class PackageInfoPlusModel extends Model { class PackageInfoPlusModel extends Model {
/// Get [ScopedModel] /// Get [ScopedModel]
static PackageInfoPlusModel of(BuildContext context) => ScopedModel.of<PackageInfoPlusModel>(context); static PackageInfoPlusModel of(BuildContext context) => ScopedModel.of<PackageInfoPlusModel>(context);
/// Error
String? _error;
/// Public error
String? get error => _error;
/// Public is error
bool get isError => _error != null;
} }

34
example/lib/packages/package_info_plus/page.dart

@ -3,6 +3,9 @@ import 'package:flutter_example_packages/base/package/package.dart';
import 'package:flutter_example_packages/packages/package_info_plus/model.dart'; import 'package:flutter_example_packages/packages/package_info_plus/model.dart';
import 'package:flutter_example_packages/packages/package_info_plus/package.dart'; import 'package:flutter_example_packages/packages/package_info_plus/package.dart';
import 'package:flutter_example_packages/widgets/base/export.dart'; import 'package:flutter_example_packages/widgets/base/export.dart';
import 'package:flutter_example_packages/widgets/blocks/block_alert.dart';
import 'package:flutter_example_packages/widgets/blocks/block_info_package.dart';
import 'package:flutter_example_packages/widgets/blocks/block_item.dart';
import 'package:flutter_example_packages/widgets/layouts/block_layout.dart'; import 'package:flutter_example_packages/widgets/layouts/block_layout.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart';
@ -25,9 +28,32 @@ class _PackageInfoPlusPageState extends AppState<PackageInfoPlusPage> {
AppLocalizations l10n, AppLocalizations l10n,
) { ) {
return BlockLayout<PackageInfoPlusModel>( return BlockLayout<PackageInfoPlusModel>(
title: widget.package.key, title: widget.package.key,
builder: (context, child, model) { builder: (context, child, model) {
return Text(widget.package.desc); return SingleChildScrollView(
}); child: Padding(
padding: const EdgeInsets.all(20),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
BlockInfoPackage(widget.package),
BlockAlert(model.error),
if (!model.isError)
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
BlockItem(
title: l10n.packageInfoPlusTitle,
desc: l10n.packageInfoPlusDesc,
value: null,
),
],
),
],
),
),
);
},
);
} }
} }

9
example/lib/packages/path_provider/model.dart

@ -5,4 +5,13 @@ import 'package:scoped_model/scoped_model.dart';
class PathProviderModel extends Model { class PathProviderModel extends Model {
/// Get [ScopedModel] /// Get [ScopedModel]
static PathProviderModel of(BuildContext context) => ScopedModel.of<PathProviderModel>(context); static PathProviderModel of(BuildContext context) => ScopedModel.of<PathProviderModel>(context);
/// Error
String? _error;
/// Public error
String? get error => _error;
/// Public is error
bool get isError => _error != null;
} }

34
example/lib/packages/path_provider/page.dart

@ -3,6 +3,9 @@ import 'package:flutter_example_packages/base/package/package.dart';
import 'package:flutter_example_packages/packages/path_provider/model.dart'; import 'package:flutter_example_packages/packages/path_provider/model.dart';
import 'package:flutter_example_packages/packages/path_provider/package.dart'; import 'package:flutter_example_packages/packages/path_provider/package.dart';
import 'package:flutter_example_packages/widgets/base/export.dart'; import 'package:flutter_example_packages/widgets/base/export.dart';
import 'package:flutter_example_packages/widgets/blocks/block_alert.dart';
import 'package:flutter_example_packages/widgets/blocks/block_info_package.dart';
import 'package:flutter_example_packages/widgets/blocks/block_item.dart';
import 'package:flutter_example_packages/widgets/layouts/block_layout.dart'; import 'package:flutter_example_packages/widgets/layouts/block_layout.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart';
@ -23,9 +26,32 @@ class _PathProviderPageState extends AppState<PathProviderPage> {
AppLocalizations l10n, AppLocalizations l10n,
) { ) {
return BlockLayout<PathProviderModel>( return BlockLayout<PathProviderModel>(
title: widget.package.key, title: widget.package.key,
builder: (context, child, model) { builder: (context, child, model) {
return Text(widget.package.desc); return SingleChildScrollView(
}); child: Padding(
padding: const EdgeInsets.all(20),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
BlockInfoPackage(widget.package),
BlockAlert(model.error),
if (!model.isError)
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
BlockItem(
title: l10n.pathProviderTitle,
desc: l10n.pathProviderDesc,
value: null,
),
],
),
],
),
),
);
},
);
} }
} }

9
example/lib/packages/shared_preferences/model.dart

@ -5,4 +5,13 @@ import 'package:scoped_model/scoped_model.dart';
class SharedPreferencesModel extends Model { class SharedPreferencesModel extends Model {
/// Get [ScopedModel] /// Get [ScopedModel]
static SharedPreferencesModel of(BuildContext context) => ScopedModel.of<SharedPreferencesModel>(context); static SharedPreferencesModel of(BuildContext context) => ScopedModel.of<SharedPreferencesModel>(context);
/// Error
String? _error;
/// Public error
String? get error => _error;
/// Public is error
bool get isError => _error != null;
} }

34
example/lib/packages/shared_preferences/page.dart

@ -3,6 +3,9 @@ import 'package:flutter_example_packages/base/package/package.dart';
import 'package:flutter_example_packages/packages/shared_preferences/model.dart'; import 'package:flutter_example_packages/packages/shared_preferences/model.dart';
import 'package:flutter_example_packages/packages/shared_preferences/package.dart'; import 'package:flutter_example_packages/packages/shared_preferences/package.dart';
import 'package:flutter_example_packages/widgets/base/export.dart'; import 'package:flutter_example_packages/widgets/base/export.dart';
import 'package:flutter_example_packages/widgets/blocks/block_alert.dart';
import 'package:flutter_example_packages/widgets/blocks/block_info_package.dart';
import 'package:flutter_example_packages/widgets/blocks/block_item.dart';
import 'package:flutter_example_packages/widgets/layouts/block_layout.dart'; import 'package:flutter_example_packages/widgets/layouts/block_layout.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart';
@ -25,9 +28,32 @@ class _SharedPreferencesPageState extends AppState<SharedPreferencesPage> {
AppLocalizations l10n, AppLocalizations l10n,
) { ) {
return BlockLayout<SharedPreferencesModel>( return BlockLayout<SharedPreferencesModel>(
title: widget.package.key, title: widget.package.key,
builder: (context, child, model) { builder: (context, child, model) {
return Text(widget.package.desc); return SingleChildScrollView(
}); child: Padding(
padding: const EdgeInsets.all(20),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
BlockInfoPackage(widget.package),
BlockAlert(model.error),
if (!model.isError)
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
BlockItem(
title: l10n.sharedPreferencesTitle,
desc: l10n.sharedPreferencesDesc,
value: null,
),
],
),
],
),
),
);
},
);
} }
} }

9
example/lib/packages/wakelock/model.dart

@ -5,4 +5,13 @@ import 'package:scoped_model/scoped_model.dart';
class WakelockModel extends Model { class WakelockModel extends Model {
/// Get [ScopedModel] /// Get [ScopedModel]
static WakelockModel of(BuildContext context) => ScopedModel.of<WakelockModel>(context); static WakelockModel of(BuildContext context) => ScopedModel.of<WakelockModel>(context);
/// Error
String? _error;
/// Public error
String? get error => _error;
/// Public is error
bool get isError => _error != null;
} }

34
example/lib/packages/wakelock/page.dart

@ -3,6 +3,9 @@ import 'package:flutter_example_packages/base/package/package.dart';
import 'package:flutter_example_packages/packages/wakelock/model.dart'; import 'package:flutter_example_packages/packages/wakelock/model.dart';
import 'package:flutter_example_packages/packages/wakelock/package.dart'; import 'package:flutter_example_packages/packages/wakelock/package.dart';
import 'package:flutter_example_packages/widgets/base/export.dart'; import 'package:flutter_example_packages/widgets/base/export.dart';
import 'package:flutter_example_packages/widgets/blocks/block_alert.dart';
import 'package:flutter_example_packages/widgets/blocks/block_info_package.dart';
import 'package:flutter_example_packages/widgets/blocks/block_item.dart';
import 'package:flutter_example_packages/widgets/layouts/block_layout.dart'; import 'package:flutter_example_packages/widgets/layouts/block_layout.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart';
@ -25,9 +28,32 @@ class _WakelockPageState extends AppState<WakelockPage> {
AppLocalizations l10n, AppLocalizations l10n,
) { ) {
return BlockLayout<WakelockModel>( return BlockLayout<WakelockModel>(
title: widget.package.key, title: widget.package.key,
builder: (context, child, model) { builder: (context, child, model) {
return Text(widget.package.desc); return SingleChildScrollView(
}); child: Padding(
padding: const EdgeInsets.all(20),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
BlockInfoPackage(widget.package),
BlockAlert(model.error),
if (!model.isError)
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
BlockItem(
title: l10n.wakelockTitle,
desc: l10n.wakelockDesc,
value: null,
),
],
),
],
),
),
);
},
);
} }
} }

2
example/lib/packages/xdga_directories/model.dart

@ -14,7 +14,7 @@ class XdgaDirectoriesModel extends Model {
/// Public error /// Public error
String? get error => _error; String? get error => _error;
/// Public error /// Public is error
bool get isError => _error != null; bool get isError => _error != null;
/// QStandardPaths::CacheLocation /// QStandardPaths::CacheLocation

107
example/lib/packages/xdga_directories/page.dart

@ -31,58 +31,61 @@ class _XdgaDirectoriesPageState extends AppState<XdgaDirectoriesPage> {
title: widget.package.key, title: widget.package.key,
builder: (context, child, model) { builder: (context, child, model) {
return SingleChildScrollView( return SingleChildScrollView(
child: Column( child: Padding(
crossAxisAlignment: CrossAxisAlignment.start, padding: const EdgeInsets.all(20),
children: [ child: Column(
BlockInfoPackage(widget.package), crossAxisAlignment: CrossAxisAlignment.start,
BlockAlert(model.error), children: [
if (!model.isError) BlockInfoPackage(widget.package),
Column( BlockAlert(model.error),
crossAxisAlignment: CrossAxisAlignment.start, if (!model.isError)
children: [ Column(
BlockItem( crossAxisAlignment: CrossAxisAlignment.start,
title: l10n.xdgaDirectoriesTitleCacheLocation, children: [
desc: l10n.xdgaDirectoriesDescCacheLocation, BlockItem(
value: model.getCacheLocation(), title: l10n.xdgaDirectoriesTitleCacheLocation,
), desc: l10n.xdgaDirectoriesDescCacheLocation,
BlockItem( value: model.getCacheLocation(),
title: l10n.xdgaDirectoriesTitleAppDataLocation, ),
desc: l10n.xdgaDirectoriesDescAppDataLocation, BlockItem(
value: model.getAppDataLocation(), title: l10n.xdgaDirectoriesTitleAppDataLocation,
), desc: l10n.xdgaDirectoriesDescAppDataLocation,
BlockItem( value: model.getAppDataLocation(),
title: l10n.xdgaDirectoriesTitleDocumentsLocation, ),
desc: l10n.xdgaDirectoriesDescDocumentsLocation, BlockItem(
value: model.getDocumentsLocation(), title: l10n.xdgaDirectoriesTitleDocumentsLocation,
), desc: l10n.xdgaDirectoriesDescDocumentsLocation,
BlockItem( value: model.getDocumentsLocation(),
title: l10n.xdgaDirectoriesTitleDownloadLocation, ),
desc: l10n.xdgaDirectoriesDescDownloadLocation, BlockItem(
value: model.getDownloadLocation(), title: l10n.xdgaDirectoriesTitleDownloadLocation,
), desc: l10n.xdgaDirectoriesDescDownloadLocation,
BlockItem( value: model.getDownloadLocation(),
title: l10n.xdgaDirectoriesTitleMusicLocation, ),
desc: l10n.xdgaDirectoriesDescMusicLocation, BlockItem(
value: model.getMusicLocation(), title: l10n.xdgaDirectoriesTitleMusicLocation,
), desc: l10n.xdgaDirectoriesDescMusicLocation,
BlockItem( value: model.getMusicLocation(),
title: l10n.xdgaDirectoriesTitlePicturesLocation, ),
desc: l10n.xdgaDirectoriesDescPicturesLocation, BlockItem(
value: model.getPicturesLocation(), title: l10n.xdgaDirectoriesTitlePicturesLocation,
), desc: l10n.xdgaDirectoriesDescPicturesLocation,
BlockItem( value: model.getPicturesLocation(),
title: l10n.xdgaDirectoriesTitleGenericDataLocation, ),
desc: l10n.xdgaDirectoriesDescGenericDataLocation, BlockItem(
value: model.getGenericDataLocation(), title: l10n.xdgaDirectoriesTitleGenericDataLocation,
), desc: l10n.xdgaDirectoriesDescGenericDataLocation,
BlockItem( value: model.getGenericDataLocation(),
title: l10n.xdgaDirectoriesTitleMoviesLocation, ),
desc: l10n.xdgaDirectoriesDescMoviesLocation, BlockItem(
value: model.getMoviesLocation(), title: l10n.xdgaDirectoriesTitleMoviesLocation,
), desc: l10n.xdgaDirectoriesDescMoviesLocation,
], value: model.getMoviesLocation(),
), ),
], ],
),
],
),
), ),
); );
}, },

5
example/lib/widgets/layouts/block_layout.dart

@ -51,10 +51,7 @@ class BlockLayout<T extends Model> extends AppStatelessWidget {
color: Colors.white, color: Colors.white,
), ),
), ),
body: Padding( body: builder.call(context, child, model),
padding: EdgeInsets.all(title == null ? 0 : 20),
child: builder.call(context, child, model),
),
); );
}, },
), ),

28
example/pubspec.lock

@ -183,6 +183,27 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.7.8" version: "0.7.8"
device_info_plus:
dependency: "direct main"
description:
name: device_info_plus
url: "https://pub.dartlang.org"
source: hosted
version: "9.0.2"
device_info_plus_aurora:
dependency: "direct main"
description:
path: "../packages/device_info_plus/device_info_plus_aurora"
relative: true
source: path
version: "0.0.1"
device_info_plus_platform_interface:
dependency: transitive
description:
name: device_info_plus_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "7.0.0"
fake_async: fake_async:
dependency: transitive dependency: transitive
description: description:
@ -600,6 +621,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "4.1.4" version: "4.1.4"
win32_registry:
dependency: transitive
description:
name: win32_registry
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.0"
xdg_directories: xdg_directories:
dependency: transitive dependency: transitive
description: description:

12
example/pubspec.yaml

@ -36,12 +36,12 @@ dependencies:
battery_plus_aurora: battery_plus_aurora:
path: ../packages/battery_plus/battery_plus_aurora path: ../packages/battery_plus/battery_plus_aurora
# ## https://pub.dev/packages/device_info_plus ## https://pub.dev/packages/device_info_plus
# device_info_plus: ^9.0.2 device_info_plus: ^9.0.2
# ## https://os-git.omprussia.ru/non-oss/flutter/flutter-plugins/-/tree/master/packages/device_info_plus/device_info_plus_aurora ## https://os-git.omprussia.ru/non-oss/flutter/flutter-plugins/-/tree/master/packages/device_info_plus/device_info_plus_aurora
# device_info_plus_aurora: device_info_plus_aurora:
# path: ../packages/device_info_plus/device_info_plus_aurora path: ../packages/device_info_plus/device_info_plus_aurora
#
# ## https://pub.dev/packages/flutter_local_notifications # ## https://pub.dev/packages/flutter_local_notifications
# flutter_local_notifications: ^14.1.1 # flutter_local_notifications: ^14.1.1
# ## https://os-git.omprussia.ru/non-oss/flutter/flutter-plugins/-/tree/master/packages/flutter_local_notifications/flutter_local_notifications_aurora # ## https://os-git.omprussia.ru/non-oss/flutter/flutter-plugins/-/tree/master/packages/flutter_local_notifications/flutter_local_notifications_aurora

Loading…
Cancel
Save