Move utility to package

This commit is contained in:
Ming Ming 2023-10-08 22:59:34 +08:00
parent 7306d3cedf
commit cd5e771044
4 changed files with 29 additions and 31 deletions

View file

@ -8,7 +8,6 @@ import 'package:nc_photos/entity/sqlite/files_query_builder.dart';
import 'package:nc_photos/entity/sqlite/isolate_util.dart';
import 'package:nc_photos/entity/sqlite/table.dart';
import 'package:nc_photos/entity/sqlite/type_converter.dart';
import 'package:nc_photos/iterable_extension.dart';
import 'package:nc_photos/k.dart' as k;
import 'package:nc_photos/mobile/platform.dart'
if (dart.library.html) 'package:nc_photos/web/platform.dart' as platform;

View file

@ -15,9 +15,9 @@ import 'package:nc_photos/entity/recognize_face.dart';
import 'package:nc_photos/entity/recognize_face_item.dart';
import 'package:nc_photos/entity/sqlite/database.dart' as sql;
import 'package:nc_photos/entity/tag.dart';
import 'package:nc_photos/iterable_extension.dart';
import 'package:nc_photos/object_extension.dart';
import 'package:np_api/np_api.dart' as api;
import 'package:np_async/np_async.dart';
import 'package:np_common/or_null.dart';
import 'package:np_common/type.dart';
import 'package:np_string/np_string.dart';

View file

@ -1,29 +0,0 @@
import 'dart:async';
import 'package:flutter/foundation.dart';
import 'package:np_collection/np_collection.dart';
extension IterableExtension<T> on Iterable<T> {
Future<List<U>> computeAll<U>(ComputeCallback<T, U> callback) async {
final list = asList();
if (list.isEmpty) {
return [];
} else {
return await compute(
_computeAllImpl<T, U>, _ComputeAllMessage(callback, list));
}
}
}
class _ComputeAllMessage<T, U> {
const _ComputeAllMessage(this.callback, this.data);
final ComputeCallback<T, U> callback;
final List<T> data;
}
Future<List<U>> _computeAllImpl<T, U>(_ComputeAllMessage<T, U> message) async {
final result = await Future.wait(
message.data.map((e) async => await message.callback(e)));
return result;
}

View file

@ -1,5 +1,8 @@
import 'dart:async';
import 'package:flutter/foundation.dart';
import 'package:np_collection/np_collection.dart';
Future<void> wait(
FutureOr<bool> Function() condition, {
Duration? pollInterval,
@ -8,3 +11,28 @@ Future<void> wait(
await Future.delayed(pollInterval ?? const Duration(milliseconds: 500));
}
}
extension IterableExtension<T> on Iterable<T> {
Future<List<U>> computeAll<U>(ComputeCallback<T, U> callback) async {
final list = asList();
if (list.isEmpty) {
return [];
} else {
return await compute(
_computeAllImpl<T, U>, _ComputeAllMessage(callback, list));
}
}
}
class _ComputeAllMessage<T, U> {
const _ComputeAllMessage(this.callback, this.data);
final ComputeCallback<T, U> callback;
final List<T> data;
}
Future<List<U>> _computeAllImpl<T, U>(_ComputeAllMessage<T, U> message) async {
final result = await Future.wait(
message.data.map((e) async => await message.callback(e)));
return result;
}