Этот репозиторий содержит Flutter плагины для платформы ОС Аврора.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

74 lines
2.1 KiB

// SPDX-FileCopyrightText: Copyright 2023 Open Mobile Platform LLC <community@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
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);
/// 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();
}
}