Browse Source
# Conflicts: # lib/im/chat_details_page.dart # lib/im/database/hx_database.dart # lib/im/im_view/im_page.dartwr_202303
wurong
4 months ago
5 changed files with 128 additions and 41 deletions
@ -0,0 +1,46 @@
|
||||
|
||||
|
||||
|
||||
Map<S, List<T>> groupBy<S, T>(Iterable<T> values, S Function(T) key) { |
||||
var map = <S, List<T>>{}; |
||||
for (var element in values) { |
||||
(map[key(element)] ??= []).add(element); |
||||
} |
||||
return map; |
||||
} |
||||
|
||||
Map<String, int> groupCount<S, T>(Map<S, List<T>> values) { |
||||
var map = <String, int>{}; |
||||
for (var element in values.keys) { |
||||
map["$element"] = values[element]?.length ?? 0; |
||||
} |
||||
return map; |
||||
} |
||||
|
||||
Map<String, T> groupItem<S, T>(Map<S, List<T>> values) { |
||||
var map = <String, T>{}; |
||||
for (var element in values.keys) { |
||||
if (values[element] == null) { |
||||
continue; |
||||
} |
||||
map["$element"] = values[element].first; |
||||
} |
||||
return map; |
||||
} |
||||
|
||||
|
||||
extension ListExtension<S, T> on Iterable<T> { |
||||
|
||||
Map<S, List<T>> lGroupBy(S Function(T) key) { |
||||
return groupBy(this, key); |
||||
} |
||||
|
||||
} |
||||
|
||||
extension MapExtension<S, T> on Map<S, List<T>> { |
||||
|
||||
Map<String, int> get mGroupCount => groupCount(this); |
||||
|
||||
Map<String, T> get mGroupItem => groupItem(this); |
||||
|
||||
} |
Loading…
Reference in new issue