Vivasoft-logo

StreamTransformer কি?

StreamTransformer মুলত ব্যবহার করা হয় কোন স্ট্রিম থেকে emit করা ভ্যালু কে সিংক করা ভ্যালু থেকে ট্রান্সফরম করতে। একটা সহজ উদাহরনে ভাল করে বুঝতে পারবে ব্যাপার টা, ধরো আমি স্ট্রিম পাইপে এড বা সিংক করতেছি ১,২,৩,৪,৫ কিন্তু আমি চাচ্ছি স্ট্রিম যখন এই ভ্যালু গুলা আমাদের দিবে তখন এই সংখ্যাগুলার সব গুলাকে স্কয়ার করে দিবে, এই কাজ টা আমরা স্ট্রিম ট্রান্সফর্মার দিয়ে করতে পারি।

স্ট্রিম ট্রন্সফর্মার মুলত অনেক ভাবেই ক্রিয়েট করা যায়, এর মধ্যে সব থেকে বহুল ব্যবহার করা মেথড টি হলো StreamTransformer.fromHandler() এটা মুলত একটা হ্যান্ডলার মেথড একপেক্ট করে যেটাতে আমাদের লজিক গুলা থাকবে। স্ট্রিম ডাটা সিংক করার আগে এই লজিক গুলা এক্সিকিউট করে তার পর সিংক করবে।

উদাহরন টি লক্ষ করা যাকঃ

import 'dart:async';

void handleData(data, EventSink sink) {
  sink.add(data * data);
}

void main() {
  final squareTransformer = StreamTransformer.fromHandlers(
    handleData: handleData,
  );
  final controller = StreamController();

  controller.stream.transform(squareTransformer).listen((data) {
    print('data: $data');
  });

  controller.add(1);
  controller.add(2);
  controller.add(3);
  controller.add(4);
  controller.add(5);
}
 

আউটপুটঃ

data: 1
data: 4
data: 9
data: 16
data: 25

Process finished with exit code 0