osam_flutter 1.1.5 osam_flutter: ^1.1.5 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: App(),
),
),
);
}
}
class App extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Builder(builder: (context) {
return 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('3'), color: Colors.yellow),
'4': () => showBottomSheet(
context: context,
builder: (ctx) => WillPopScope(
onWillPop: () async {
ctx.presenter<NavPresenter>().pop();
return true;
},
child: Container(
height: 90,
width: 50,
color: Colors.green,
),
))
},
log: true,
);
}),
);
}
}
//showDialog(
//useRootNavigator: false,
//context: context,
//child: Container(
//color: Colors.deepOrangeAccent,
//child: Center(
//child: RaisedButton(
//child: Icon(Icons.backspace),
//onPressed: () {
//context.presenter<NavPresenter>().pop();
//},
//),
//),
//))
//child: WillPopScope(
//child: ,
//onWillPop: () async {
//context.presenter<NavPresenter>().pop();
//return 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.push('4');
}
},
),
],
),
),
),
);
}
}
class NavPresenter extends Presenter with NavigationPresenter {
@override
NavigationState get navigationState => nav;
}
final nav = NavigationState(['1']);