Sobes.tech
Junior — Middle

Dartda ma'lumot oqimini amalga oshirish uchun qanday usullar mavjud?

sobes.tech AI

AIdan javob

Dart'ta ma'lumot oqimlarini (streams) amalga oshirish uchun bir nechta yondashuvlar mavjud:

  1. Stream va StreamController — oqimlar bilan ishlashning asosiy usuli. StreamController voqealarni qo'shishga imkon beradi, Stream esa unga obuna bo'lish mumkin bo'lgan oqimdir.
final controller = StreamController<int>();

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

controller.add(1);
controller.add(2);
controller.close();
  1. Asinxron generatorlar (async)* — qiymatlarni chiqarish uchun yield so'zini ishlatadigan va Stream qaytaradigan funktsiyalar yordamida ma'lumot oqimlarini yaratish imkonini beradi.
Stream<int> countStream(int to) async* {
  for (int i = 1; i <= to; i++) {
    yield i;
    await Future.delayed(Duration(seconds: 1));
  }
}

countStream(3).listen(print);
  1. Kutubxonalar bilan tayyor oqimlardan foydalanish — masalan, Stream.periodic doimiy voqealar uchun.

Shunday qilib, asosiy usullar — bu StreamController yordamida oqimlarni yaratish va boshqarish, va asinxron generatorlar yordamida ma'lumotlar ishlab chiqarish uchun oqimlar yaratishdir.