Sobes.tech
Middle

Ինչպես են օգտագործվում հոսքերը Flutter-ում?

sobes.tech AI

Պատասխան AI-ից

Սթրիմները Flutter-ում օգտագործվում են անընդհատ իրադարձությունների հաջորդականությամբ աշխատելու համար: Դրանք հիմնված են ռեակցիվ ծրագրավորման պառադիգմի վրա և ապահովում են տվյալների մշակման եղանակը ըստ դրանց ստացման:

Սթրիմների հիմնական կիրառումները՝

  • UI-թարմացումներ: Դիտել տվյալների փոփոխությունները (օրինակ՝ ցանցային հարցումների կամ տվյալների բազայից) և ավտոմատ կերպով թարմացնել վիդջեթները:
  • BLoC/Cubit և UI միջև կապ: BLoC/Cubit օգտագործում են Stream (անցնելով StateStreamable) վիճակների արտանետման համար, որոնց վրա UI-ն բաժանորդագրվում է:
  • Օգտագործողի մուտքային տվյալների մշակումը: Դիտել մուտքային իրադարձությունները (օրինակ՝ տեքստային դաշտերից):
  • WebSocket և այլ ասինխրոնային գործողություններ: Տվյալների ստացում իրական ժամանակում:

Հիմնական հասկացությունները՝

  • Stream: Ասինխրոնային իրադարձությունների հաջորդականություն:
  • StreamController: Կառավարում է սթրիմը, թույլ է տալիս ավելացնել տվյալներ (add), սխալներ (addError) և փակել սթրիմը (close):
  • StreamSubscription: Օբյեկտ, որը ներկայացնում է ակտիվ բաժանորդագրությունը սթրիմին: Թույլ է տալիս ստանալ տվյալներ (onData), մշակել սխալներ (onError) և ավարտել սթրիմը (onDone):

Օրինակ StreamBuilder-ի օգտագործմամբ՝

// Ենթադրենք, ունենք սթրիմ, որը արտանետում է ամբողջ թվեր
Stream<int> countStream = Stream.periodic(Duration(seconds: 1), (count) => count);

class MyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return StreamBuilder<int>(
      stream: countStream, // բաժանորդագրվում ենք սթրիմին
      builder: (context, snapshot) {
        if (snapshot.connectionState == ConnectionState.waiting) {
          return CircularProgressIndicator(); // մինչ սթրիմը սպասում է տվյալների
        } else if (snapshot.hasError) {
          return Text('Error: ${snapshot.error}'); // եթե տեղի է ունենում սխալ
        } else {
          return Text('Count: ${snapshot.data}'); // ցուցադրում է վերջին տվյալները սթրիմից
        }
      },
    );
  }
}

Սթրիմները կարող են լինել՝

  • Single-subscription: Միակ լսողը կարող է բաժանորդագրվել ցանկացած ժամանակ: Փորձը երկրորդ անգամ բաժանորդագրվելու՝ կհանգեցնի սխալի:
  • Broadcast: Շատ լսողներ կարող են բաժանորդագրվել նույն սթրիմին: Տվյալները ուղարկվում են բոլոր ակտիվ լսողներին:

Սթրիմների մշակման համար հաճախ օգտագործվում են rxdart փաթեթի օպերատորները, որոնք ապահովում են հարստացված գործիքակազմ՝ սթրիմների փոխակերպման, ֆիլտրացման և միացման համար։