Sobes.tech
Junior

Do czego służy Provider w Flutterze?

sobes.tech AI

Odpowiedź od AI

Provider jest używany do zarządzania stanem w aplikacjach Flutter. Ułatwia dostęp do danych i ich rozpowszechnianie w drzewie widżetów. Provider opiera się na koncepcji dziedziczonych widżetów (InheritedWidget), ale oferuje bardziej wygodne i lekkie API.

Główne zalety:

  • Łatwość użycia: Intuicyjne API do tworzenia, dostarczania i konsumowania danych.
  • Wydajność: Dzięki InheritedWidget, tylko widżety bezpośrednio zależne od danych są przebudowywane przy ich zmianie.
  • Testowalność: Łatwo wymieniać dostawców podczas testów jednostkowych.
  • Organizacja kodu: Pomaga oddzielić logikę biznesową od UI.
  • Skalowalność: Nadaje się zarówno do małych, jak i dużych projektów.

Przypadki użycia:

  • Dostęp do danych użytkownika (np. autoryzacja).
  • Ogólne ustawienia aplikacji.
  • Stan koszyka.
  • Dane z sieci lub bazy danych.

Przykład użycia ChangeNotifierProvider:

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

// Klasa śledząca zmiany
class Counter with ChangeNotifier {
  int _count = 0;

  int get count => _count;

  void increment() {
    _count++;
    notifyListeners(); // Powiadamiamy słuchaczy o zmianie
  }
}

class MyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ChangeNotifierProvider( // Dostarcza instancję Counter
      create: (context) => Counter(),
      child: Consumer<Counter>( // Konsumuje instancję Counter
        builder: (context, counter, child) {
          return Text('Count: ${counter.count}');
        },
      ),
    );
  }
}