stated 1.1.0 stated: ^1.1.0 copied to clipboard
final state
stated #
final state
example #
import 'package:flutter/material.dart';
import 'package:stated/stated.dart';
void main() {
runApp(MyApp());
}
/// ViewModel of Counter
class CounterState {
CounterState({
required this.counter,
required this.increment,
});
final VoidCallback increment;
final int counter;
}
/// Counter logic
class CounterBloc extends Stated<CounterState> {
int _counter = 0;
@override
CounterState build() => CounterState(
counter: _counter,
increment: () => setState(() => _counter++),
);
}
/// Counter presenter
class CounterWidget extends StatelessWidget {
CounterWidget(this.state);
final CounterState state;
@override
Widget build(BuildContext context) => GestureDetector(
onTap: state.increment,
child: Text('Counter: ${state.counter}'),
);
}
/// Usage
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Stated',
home: Scaffold(
body: StatedBuilder<CounterState>(
create: (context) => CounterBloc(),
builder: (context, state, _) => CounterWidget(state),
),
),
);
}
}