v2.3.0
vxstate
VxState 是 Flutter 的另一種狀態管理解決方案。它深受 Redux 與 VueX 的啟發。
31喜歡 3500近 30 天下載160Pub 分數
AndroidiOSWebmacOSWindowsLinux
另一種狀態管理解決方案
{"sdk":"flutter"}{"sdk":"flutter"}以下為英文專案原文快照,最新內容請造訪 GitHub。
VxState is a state management library built for Flutter apps with focus on simplicity. It is inspired by StoreKeeper & libraries like Redux, Vuex etc with the power of streams. Here is a basic idea of how it works:
Core of VxState is based on the InheritedModel widget from Flutter.
Add to your pubpsec:
dependencies:
...
vxstate: any
Create a store:
import 'package:vxstate/vxstate.dart';
class MyStore extends VxStore {
int count = 0;
}
Define mutations:
class Increment extends VxMutation<MyStore> {
perform() => store.count++;
}
Listen to mutations:
@override
Widget build(BuildContext context) {
// Define when this widget should re render
VxState.watch(context, on: [Increment]);
// Get access to the store
MyStore store = VxState.store as MyStore;
return Text("${store.count}");
}
Complete example:
import 'package:flutter/material.dart';
import 'package:vxstate/vxstate.dart';
// Build store and make it part of app
void main() {
runApp(VxState(
store: MyStore(),
child: MyApp(),
));
}
// Store definition
class MyStore extends VxStore {
int count = 0;
}
// Mutations
class Increment extends VxMutation<MyStore> {
perform() => store.count++;
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
// Define when this widget should re render
VxState.watch(context, on: [Increment]);
// Get access to the store
MyStore store = VxState.store as MyStore;
return MaterialApp(
home: Scaffold(
body: Column(
children: <Widget>[
Text("Count: ${store.count}"),
RaisedButton(
child: Text("Increment"),
onPressed: () {
// Invoke mutation
Increment();
},
),
],
),
),
);
}
}