osam 5.2.1
osam: ^5.2.1 copied to clipboard
State management library inspired SOLID prenciples.
example/lib/main.dart
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:osam/osam.dart';
import 'data/repository.dart';
import 'domain/state.dart';
import 'domain/usecase.dart';
import 'presentation/presenter.dart';
void main() {
final repoFactory = RepoFactory();
final countRepository = repoFactory.counterRepo();
final appState = AppState();
final useCase = CounterUseCase(countRepository, appState);
final useCaseContainer = UseCaseContainer([useCase]);
runApp(UseCaseProvider(
appState,
useCaseContainer,
null,
child: MyApp(),
));
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return PresenterProvider(
presenter: MyPresenter(),
child: MaterialApp(
home: Scaffold(
body: Center(
child: Builder(builder: (context) {
return Stack(
children: [
RaisedButton(
child: const Text(''),
onPressed: () {
Navigator.of(context).push(CupertinoPageRoute(
builder: (_) => Scaffold(
appBar: AppBar(),
)));
},
),
Container(
color: Colors.transparent,
)
],
);
}),
),
),
),
);
}
}
class S1 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return const Scaffold();
}
}
class TB extends StatelessWidget {
@override
Widget build(BuildContext context) {
return RaisedButton(
child: Icon(Icons.clear),
onPressed: () {
context.presenter<MyPresenter>().dispose();
},
);
}
}