fix sorting
This commit is contained in:
parent
e446757f7e
commit
343c324050
@ -11,9 +11,20 @@ class MountList with ChangeNotifier {
|
||||
_fetch();
|
||||
}
|
||||
|
||||
List<MountConfig> _items = [];
|
||||
List<MountConfig> _mountList = [];
|
||||
|
||||
UnmodifiableListView get items => UnmodifiableListView(_items);
|
||||
UnmodifiableListView get items => UnmodifiableListView(_mountList);
|
||||
|
||||
void _sort(list) {
|
||||
list.sort((a, b) {
|
||||
final res = a.type.compareTo(b.type);
|
||||
if (res != 0) {
|
||||
return res;
|
||||
}
|
||||
|
||||
return a.name.compareTo(b.name);
|
||||
});
|
||||
}
|
||||
|
||||
Future<void> _fetch() async {
|
||||
final response = await http.get(
|
||||
@ -21,16 +32,16 @@ class MountList with ChangeNotifier {
|
||||
);
|
||||
|
||||
if (response.statusCode == 200) {
|
||||
List<MountConfig> items = [];
|
||||
List<MountConfig> nextList = [];
|
||||
|
||||
var data = jsonDecode(response.body);
|
||||
data.forEach((key, value) {
|
||||
items.addAll(
|
||||
nextList.addAll(
|
||||
value.map((name) => MountConfig.fromJson(key, name)).toList(),
|
||||
);
|
||||
});
|
||||
items.sort((a, b) => a.name.compareTo(b.name));
|
||||
_items = items;
|
||||
_sort(nextList);
|
||||
_mountList = nextList;
|
||||
|
||||
notifyListeners();
|
||||
return;
|
||||
@ -38,18 +49,18 @@ class MountList with ChangeNotifier {
|
||||
}
|
||||
|
||||
void add(MountConfig config) {
|
||||
var item = _items.firstWhereOrNull((cfg) => cfg.name == config.name);
|
||||
var item = _mountList.firstWhereOrNull((cfg) => cfg.name == config.name);
|
||||
if (item != null) {
|
||||
throw DuplicateMountException(name: config.name);
|
||||
}
|
||||
|
||||
_items.add(config);
|
||||
_items.sort((a, b) => a.name.compareTo(b.name));
|
||||
_mountList.add(config);
|
||||
_sort(_mountList);
|
||||
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void remove(String name) {
|
||||
_items.removeWhere((item) => item.name == name);
|
||||
_mountList.removeWhere((item) => item.name == name);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user