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 փաթեթի օպերատորները, որոնք ապահովում են հարստացված գործիքակազմ՝ սթրիմների փոխակերպման, ֆիլտրացման և միացման համար։