搜尋套件、儲存庫與 APP 分類

套件詳情v0.10.0

flutter_state_management

一組幫助類別,讓使用 ChangeNotifier 進行狀態管理更為容易

AndroidiOSWebmacOSWindowsLinux
近 30 天下載
296
喜歡數
4
Pub 分數
160

安裝套件

flutter pub add flutter_state_management

套件介紹

根據套件公開資料產生的選型評估,僅供參考。

一個輕量級套件,透過提供用於處理 ChangeNotifier 的協助類別來簡化 Flutter 中的狀態管理。它減少樣板程式碼,提升開發者在管理應用狀態時的生產力。此套件專為與 Flutter 的反應式框架無縫整合而設計,支援所有主要平台,包括 Android、iOS、Web、macOS、Windows 和 Linux。對於尋求簡潔、乾淨的狀態處理方法,又不希望使用較複雜的狀態管理解決方案的開發者而言,這個套件非常理想。

適用情境

  • 小型應用中的簡單狀態更新
  • 減少 ChangeNotifier 實現中的樣板程式碼
  • 簡化表單和UI組件中的狀態邏輯
  • 在多個小部件之間管理共享資料
  • BLoC 或 Provider 的輕量級替代方案

主要特色

  • ChangeNotifier 的輔助類別
  • 最小化設定和整合
  • 跨平台支援
  • 乾淨且可讀的程式碼結構
  • 用於常見狀態模式的內建工具

適合對象

  • 初學者 Flutter 開發者
  • 中小型專案
  • 需要基本狀態管理的應用程式
  • 開發者偏好簡單而非複雜
  • 希望快速原型設計的團隊

使用建議

  • 不適合複雜的狀態流程
  • 與功能齊全的狀態管理庫相比功能有限
  • 大型應用程式可能需要額外的工具
  • 在擴展時與其他狀態管理方法結合使用效果最佳
  • 不包含內建的持久化或非同步處理

原始 README

以下為關聯原始碼儲存庫的 README 原文快照,最新內容請造訪原始碼儲存庫。

Flutter State Management

Just a couple of utility classes to make it easier to use Flutter framework's built-in ChangeNotifier and Listenable for state management.

Features

  • No learning curve if you already know Flutter
  • Simple package based on ChangeNotifier (No bloatware)

Usage

Create your model class

class Counter extends StateNotifier<int, String> {
  Counter() : super(const Active(data: 0));

  void increment() async {
    setWaiting();

    await Future.delayed(const Duration(seconds: 2));

    if (data > 20) {
     setFailed('greater than 20');
    } else {
      setActive(data + 1);
    }
  }
}

Or if you want the state to persist across restarts

class Counter extends PersistedStateNotifier<int, String> {
  Counter() : super(IsarKeyValue(), startState: 0);

  void increment() async {
    setWaiting();

    await Future.delayed(const Duration(seconds: 2));

    if (data > 20) {
      setFailed('greater than 20');
    } else {
      setActive(data + 1);
    }
  }
}

Handle State Changes in UI

To only rebuild specific parts:
  1. Use ValueListenableBuilder from the Flutter framework:
final counter = Counter();

ValueListenableBuilder(
  valueListenable: counter,
  child: Text()
  builder: (context, state, child) => // return updated UI here (can also use counter.builderArg here)
  child: const Text('Hello'),
  ),
);

You can also use builderArg helper:

builder: counter.builderArg(
  onActive: ,
  onWaiting: ,
  onNone: ,
  onFailure: ,
),
  1. Or use StateNotifierBuilder that comes with this package and is more user friendly:
final counter = Counter();

counter.builder(
  onActive: (context, data) => Text(data.toString()),
),


\

To rebuild whole widget

Convert your existing StatelessWidget to RStatelessWidget, and StatefulWidget to RStatefulWidget and and just watch the model inside the build method:

class CounterText extends RStatelessWidget {
  @override
  Widget build(BuildContext context) {
    counter.watch(context); // call watch inside the build method (do not use any if) 
    return Text(data.toString());
  }
}

所屬分類

原始碼儲存庫

使用此套件的專案

暫無相關資料。