compute () di flutter tidak berpengaruh
Sep 19 2020
Saya coba gunakan computedi Flutter. Di sini saya mencoba melewatkan beberapa parameter di dalam Peta. Tetapi kode di fungsi saya myFunctiontidak berfungsi. Saya tidak mendapatkan kesalahan atau sesuatu yang lain. Kode saya sepertinya diabaikan. Apakah Anda menemukan kesalahan di sini?
Fungsi komputasi:
Map map = Map();
map['resultList'] = resultList;
map['_getImageFileFromAssets'] = _getImageFileFromAssets;
map["picturesData"] = picturesData;
map["albumID"] = albumID;
await compute(myFunction, map);
Memanggil fungsi berikut:
Future<bool> myFunction(map) async {
var resultList = map["resultList"];
var _getImageFileFromAssets = map["_getImageFileFromAssets"];
var picturesData = map["picturesData"];
var albumID = map["albumID"];
print("Starten");
for (var i = 0; i < resultList.length; i++) {
print(i);
File imageFile = await _getImageFileFromAssets(resultList[i]);
final appDir = await syspath.getApplicationDocumentsDirectory();
final fileName = path.basename(imageFile.path);
final savedImage =
await File(imageFile.path).copy('${appDir.path}/$fileName');
// Creating thumbnails
final thumb = image.decodeImage(await File(savedImage.path).readAsBytes());
final thumbImage = image.copyResize(thumb, width: 500);
new File('${appDir.path}/$fileName-thumb-500.jpg')
.writeAsBytes(image.encodeJpg(thumbImage));
final finalThumbImage = File('${appDir.path}/$fileName-thumb-500.jpg');
picturesData.add(Picture(
album: albumID,
path: savedImage.path,
thumbPath: finalThumbImage.path,
timestamp: Timestamp.now()));
}
return true;
}
Jawaban
kazume Sep 19 2020 at 11:30
Oke, beberapa kode - saya taruh ini di dartpad.dev :
import 'package:flutter/foundation.dart';
void main() {
Map map = Map();
compute(myFunction, map).then((result) => print(result));
}
Future<bool> myFunction(Map map) async {
print("Starten");
// fake long process
await Future.delayed(Duration(seconds: 5));
return true;
}
dan dapatkan ini sebagai hasil konsol:
Starten
true
Juga: apakah ada alasan mengapa Anda membutuhkan parameter "map" dalam fungsi Anda dynamic? Jika tidak, saya akan mendeklarasikannya sebagai tipe Map(seperti yang saya lakukan sekarang).
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan
Jana Duggar: Semua yang Dia Katakan Tentang Cinta dan Jendela 5 Tahunnya untuk Menemukan 'Yang Satu'