20 changed files with 244 additions and 283 deletions
@ -1,17 +0,0 @@ |
|||||||
import 'package:flutter/widgets.dart'; |
|
||||||
import 'package:scoped_model/scoped_model.dart'; |
|
||||||
|
|
||||||
/// Model for [FlutterCacheManagerPage] |
|
||||||
class FlutterCacheManagerModel extends Model { |
|
||||||
/// Get [ScopedModel] |
|
||||||
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; |
|
||||||
} |
|
@ -1,62 +0,0 @@ |
|||||||
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/packages/flutter_cache_manager/model.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/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_gen/gen_l10n/app_localizations.dart'; |
|
||||||
|
|
||||||
class FlutterCacheManagerPage extends AppStatefulWidget { |
|
||||||
FlutterCacheManagerPage({ |
|
||||||
super.key, |
|
||||||
}); |
|
||||||
|
|
||||||
final Package package = packageFlutterCacheManager; |
|
||||||
|
|
||||||
@override |
|
||||||
State<FlutterCacheManagerPage> createState() => |
|
||||||
_FlutterCacheManagerPageState(); |
|
||||||
} |
|
||||||
|
|
||||||
class _FlutterCacheManagerPageState extends AppState<FlutterCacheManagerPage> { |
|
||||||
@override |
|
||||||
Widget buildWide( |
|
||||||
BuildContext context, |
|
||||||
MediaQueryData media, |
|
||||||
AppLocalizations l10n, |
|
||||||
) { |
|
||||||
return BlockLayout<FlutterCacheManagerModel>( |
|
||||||
model: getIt<FlutterCacheManagerModel>(), |
|
||||||
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), |
|
||||||
BlockAlert(model.error), |
|
||||||
if (!model.isError) |
|
||||||
Column( |
|
||||||
crossAxisAlignment: CrossAxisAlignment.start, |
|
||||||
children: [ |
|
||||||
BlockItem( |
|
||||||
title: l10n.flutterCacheManagerTitle, |
|
||||||
desc: l10n.flutterCacheManagerDesc, |
|
||||||
value: null, |
|
||||||
), |
|
||||||
], |
|
||||||
), |
|
||||||
], |
|
||||||
), |
|
||||||
), |
|
||||||
); |
|
||||||
}, |
|
||||||
); |
|
||||||
} |
|
||||||
} |
|
@ -1,8 +1,71 @@ |
|||||||
import 'package:flutter/widgets.dart'; |
import 'package:flutter/widgets.dart'; |
||||||
|
import 'package:flutter_example_packages/base/package/package.dart'; |
||||||
|
import 'package:flutter_example_packages/base/package/package_page.dart'; |
||||||
|
import 'package:flutter_example_packages/packages/packages.dart' as list; |
||||||
|
import 'package:flutter_example_packages/pages/home/widgets/home_app_bar.dart'; |
||||||
import 'package:scoped_model/scoped_model.dart'; |
import 'package:scoped_model/scoped_model.dart'; |
||||||
|
|
||||||
/// Model for [HomePage] |
/// Model for [HomePage] |
||||||
class HomeModel extends Model { |
class HomeModel extends Model { |
||||||
/// Get [ScopedModel] |
/// Get [ScopedModel] |
||||||
static HomeModel of(BuildContext context) => ScopedModel.of<HomeModel>(context); |
static HomeModel of(BuildContext context) => |
||||||
} |
ScopedModel.of<HomeModel>(context); |
||||||
|
|
||||||
|
/// Get all list packages |
||||||
|
final List<Package> packages = list.packages; |
||||||
|
|
||||||
|
/// Filtered list packages |
||||||
|
List<Package> _filteredPackages = list.packages; |
||||||
|
|
||||||
|
/// Public filtered list packages |
||||||
|
List<Package> get filteredPackages => _filteredPackages; |
||||||
|
|
||||||
|
/// Get count packages |
||||||
|
int get fullSize => packages.length; |
||||||
|
|
||||||
|
/// Check is search |
||||||
|
bool get isSearch => _search.isNotEmpty; |
||||||
|
|
||||||
|
/// Search text |
||||||
|
String _search = ""; |
||||||
|
|
||||||
|
/// Filter list packages |
||||||
|
PlatformFilter _filter = PlatformFilter.disable; |
||||||
|
|
||||||
|
/// Update state filtered |
||||||
|
void updateFilterState( |
||||||
|
String search, |
||||||
|
PlatformFilter filter, |
||||||
|
) { |
||||||
|
_search = search; |
||||||
|
_filter = filter; |
||||||
|
_filteredPackages = _filterPackages(); |
||||||
|
notifyListeners(); |
||||||
|
} |
||||||
|
|
||||||
|
/// Filter list packages |
||||||
|
List<Package> _filterPackages() { |
||||||
|
return packages.where((element) { |
||||||
|
bool result = true; |
||||||
|
switch (_filter) { |
||||||
|
case PlatformFilter.dependent: |
||||||
|
result = element.isPlatformDependent == true; |
||||||
|
break; |
||||||
|
case PlatformFilter.independent: |
||||||
|
result = element.isPlatformDependent == false; |
||||||
|
break; |
||||||
|
case PlatformFilter.demo: |
||||||
|
result = element is PackagePage; |
||||||
|
break; |
||||||
|
case PlatformFilter.disable: |
||||||
|
break; |
||||||
|
} |
||||||
|
if (_search.isNotEmpty) { |
||||||
|
if (!element.key.contains(_search)) { |
||||||
|
result = false; |
||||||
|
} |
||||||
|
} |
||||||
|
return result; |
||||||
|
}).toList(); |
||||||
|
} |
||||||
|
} |
||||||
|
Before Width: | Height: | Size: 917 B |
Before Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 8.1 KiB |
Before Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 20 KiB |
@ -1,58 +0,0 @@ |
|||||||
<!DOCTYPE html> |
|
||||||
<html> |
|
||||||
<head> |
|
||||||
<!-- |
|
||||||
If you are serving your web app in a path other than the root, change the |
|
||||||
href value below to reflect the base path you are serving from. |
|
||||||
|
|
||||||
The path provided below has to start and end with a slash "/" in order for |
|
||||||
it to work correctly. |
|
||||||
|
|
||||||
For more details: |
|
||||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base |
|
||||||
|
|
||||||
This is a placeholder for base href that will be replaced by the value of |
|
||||||
the `--base-href` argument provided to `flutter build`. |
|
||||||
--> |
|
||||||
<base href="$FLUTTER_BASE_HREF"> |
|
||||||
|
|
||||||
<meta charset="UTF-8"> |
|
||||||
<meta content="IE=Edge" http-equiv="X-UA-Compatible"> |
|
||||||
<meta name="description" content="A new Flutter project."> |
|
||||||
|
|
||||||
<!-- iOS meta tags & icons --> |
|
||||||
<meta name="apple-mobile-web-app-capable" content="yes"> |
|
||||||
<meta name="apple-mobile-web-app-status-bar-style" content="black"> |
|
||||||
<meta name="apple-mobile-web-app-title" content="flutter_example_packages"> |
|
||||||
<link rel="apple-touch-icon" href="icons/Icon-192.png"> |
|
||||||
|
|
||||||
<!-- Favicon --> |
|
||||||
<link rel="icon" type="image/png" href="favicon.png"/> |
|
||||||
|
|
||||||
<title>flutter_example_packages</title> |
|
||||||
<link rel="manifest" href="manifest.json"> |
|
||||||
|
|
||||||
<script> |
|
||||||
// The value below is injected by flutter build, do not touch. |
|
||||||
var serviceWorkerVersion = null; |
|
||||||
</script> |
|
||||||
<!-- This script adds the flutter initialization JS code --> |
|
||||||
<script src="flutter.js" defer></script> |
|
||||||
</head> |
|
||||||
<body> |
|
||||||
<script> |
|
||||||
window.addEventListener('load', function(ev) { |
|
||||||
// Download main.dart.js |
|
||||||
_flutter.loader.loadEntrypoint({ |
|
||||||
serviceWorker: { |
|
||||||
serviceWorkerVersion: serviceWorkerVersion, |
|
||||||
} |
|
||||||
}).then(function(engineInitializer) { |
|
||||||
return engineInitializer.initializeEngine(); |
|
||||||
}).then(function(appRunner) { |
|
||||||
return appRunner.runApp(); |
|
||||||
}); |
|
||||||
}); |
|
||||||
</script> |
|
||||||
</body> |
|
||||||
</html> |
|
@ -1,35 +0,0 @@ |
|||||||
{ |
|
||||||
"name": "flutter_example_packages", |
|
||||||
"short_name": "flutter_example_packages", |
|
||||||
"start_url": ".", |
|
||||||
"display": "standalone", |
|
||||||
"background_color": "#0175C2", |
|
||||||
"theme_color": "#0175C2", |
|
||||||
"description": "A new Flutter project.", |
|
||||||
"orientation": "portrait-primary", |
|
||||||
"prefer_related_applications": false, |
|
||||||
"icons": [ |
|
||||||
{ |
|
||||||
"src": "icons/Icon-192.png", |
|
||||||
"sizes": "192x192", |
|
||||||
"type": "image/png" |
|
||||||
}, |
|
||||||
{ |
|
||||||
"src": "icons/Icon-512.png", |
|
||||||
"sizes": "512x512", |
|
||||||
"type": "image/png" |
|
||||||
}, |
|
||||||
{ |
|
||||||
"src": "icons/Icon-maskable-192.png", |
|
||||||
"sizes": "192x192", |
|
||||||
"type": "image/png", |
|
||||||
"purpose": "maskable" |
|
||||||
}, |
|
||||||
{ |
|
||||||
"src": "icons/Icon-maskable-512.png", |
|
||||||
"sizes": "512x512", |
|
||||||
"type": "image/png", |
|
||||||
"purpose": "maskable" |
|
||||||
} |
|
||||||
] |
|
||||||
} |
|
Loading…
Reference in new issue