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_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'; |
||||
|
||||
/// Model for [HomePage] |
||||
class HomeModel extends Model { |
||||
/// 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