Avatar
0
uzumaki258 Beginner
uzumaki258 Beginner
Suggest lib cho isolate Flutter
Hi mọi người,

Em đang làm app có dùng đến isolate để prepare, và loading cho nhanh hơn. Không biết mọi người có dùng lib nào để bớt boilercode khi làm isolate cho heavy state không ạ.

Cảm ơn mọi người

  • Answer
isolate flutter
Remain: 5
2 Answers
Avatar
monkey Beginner
monkey Beginner
Chắc em cần paste code của em xem anh có làm gọn hơn được không thôi chứ bản chất Isolate nó cũng chỉ là 1 cái event loop, anh nghĩ cũng không có gì đơn giản hơn nữa em ạ.
  • 0
  • Reply
Hi a,

Bây giờ em có khá nhiều usecase cần sử dụng khoảng 10 method có trong local repository (database query heavy search & similarity search). Có cách nào để hạn chế phải viết 10 cái top-level function kia ko ạ, hoặc a có từng dùng lib nào đỡ boilerplate code thì cũng giảm được effort ạ.

Thank a.

 –  uzumaki258 1635132788000
Vậy tức là câu hỏi của em là: có thư viện nào có thể giảm được số lượng dòng code phải viết cho 10 method kia đúng không em? Nếu đúng, em có thể dùng thư viện rxdart nhé.  –  monkey 1635133738000
Dạ đúng ạ,

Em đang tham khảo lib này:

https://github.com/alphamikle/isolator

anh có từng dùng lib khác, hoặc từng viết riêng thành 1 module để reuse code cho vụ này thì cho em tham khảo ạ

Thank a

 –  uzumaki258 1635134443000
Avatar
tvd12 Beginner
tvd12 Beginner
Nếu vậy, anh thấy em có thể tách thành lớp DataFetcher để common code em ạ:

class Data {
  late String data1;
  late String data2;

  String toJson() {
    return '{"data1":' + data1 + ',' + '"data2": ' + data2 + '}';
  }
}

class DataFetcher {
  Data getData() {
    var data = new Data();
    data.data1 = 'data1';
    data.data2 = 'data2';
    return data;
  }
}

void getData(SendPort sendPort) {
  var data = DataFetcher().getData();
  sendPort.send(data.toJson());
}

void getDataAsync() async {
  var receivePort= ReceivePort(); //port for isolate to receive messages.
  var isolate = await Isolate.spawn(getData, receivePort.sendPort);
  receivePort.listen((data) {
    stdout.write('Receiving: ' + data + ', ');
    isolate.kill();
  });
}

void main(){
  getDataAsync();
}
  • 0
  • Reply