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