osam_flutter 1.1.3 osam_flutter: ^1.1.3 copied to clipboard
Navigation and UI elements which fits with Osam library
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:osam_flutter/osam_flutter.dart';
void main() async {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return UseCaseProvider(
null,
null,
null,
child: PresenterProvider(
presenter: NavPresenter(),
child: MaterialApp(
home: OsamNavigator<NavPresenter>(
{
'1': (ctx) => Page1(key: ValueKey('1'), color: Colors.red),
'2': (ctx) => Page1(key: ValueKey('2'), color: Colors.green),
'3': (ctx) => Page1(key: ValueKey('2'), color: Colors.yellow),
},
log: true,
),
),
),
);
}
}
class Page1 extends StatelessWidget {
final Color color;
const Page1({Key key, this.color}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Container(
color: color,
child: Center(
child: Column(
children: <Widget>[
RaisedButton(
onPressed: () async {
if (color == Colors.red) {
nav.push('2');
} else if (color == Colors.green) {
nav.push('3');
} else {
nav.popUntil('1');
}
},
),
RaisedButton(
onPressed: () {
nav.pushReplacement('2');
},
),
],
),
),
),
);
}
}
class NavPresenter extends Presenter with NavigationPresenter {
@override
NavigationState get navigationState => nav;
}
final nav = NavigationState(['1']);