Sobes.tech
Junior — Middle

Ինչ է տարբերությունը StreamBuilder և Future կոմպոնենտների միջև՝ աշխատելիս ասինխրոն տվյալների հետ Flutter-ում?

sobes.tech AI

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

Flutter-ում FutureBuilder և StreamBuilder օգտագործվում են ասինխրոն տվյալների հետ աշխատելու համար, բայց տարբեր են տվյալների աղբյուրի տեսակի առումով:

  • FutureBuilder աշխատում է Future օբյեկտի հետ — սա միակողմանի ասինխրոն գործողություն է, որը վերադարձնում է արդյունք կամ սխալ: Օրինակ, տվյալների բեռնում սերվերից:

  • StreamBuilder աշխատում է Stream-ի հետ — սա տվյալների հոսք է, որը կարող է ժամանակի ընթացքում արտանետել մի քանի իրադարձություն: Օրինակ, իրական ժամանակի տվյալների թարմացումներ կամ օգտագործողի մուտքի իրադարձություններ:

FutureBuilder-ի օգտագործման օրինակ:

FutureBuilder<String>(
  future: fetchData(),
  builder: (context, snapshot) {
    if (snapshot.connectionState == ConnectionState.waiting) {
      return CircularProgressIndicator();
    } else if (snapshot.hasError) {
      return Text('Սխալ: \\${snapshot.error}');
    } else {
      return Text('Տվյալներ: \\${snapshot.data}');
    }
  },
)

StreamBuilder-ի օգտագործման օրինակ:

StreamBuilder<int>(
  stream: counterStream(),
  builder: (context, snapshot) {
    if (!snapshot.hasData) {
      return CircularProgressIndicator();
    }
    return Text('Հաշվիչ: \\${snapshot.data}');
  },
)

Այսպիսով, ընտրեք FutureBuilder՝ մեկ անգամյա գործողությունների համար և StreamBuilder՝ հոսքային տվյալների համար։