osam_flutter 2.0.3 osam_flutter: ^2.0.3 copied to clipboard
Navigation and UI elements which fits with Osam library
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:osam_flutter/osam_flutter.dart';
void main() async {
runApp(UseCaseProvider(
null,
null,
null,
child: PresenterProvider(
presenter: NavPresenter(),
child: MaterialApp(
home: const App(),
),
),
));
}
class App extends StatelessWidget {
const App();
@override
Widget build(BuildContext context) {
return OsamNavigator<NavPresenter>(
routes: {
'1': (ctx) => Page1(key: ValueKey('1'), color: Colors.green),
'2': (ctx) => Page1(key: ValueKey('2'), color: Colors.yellow),
'3': (ctx) => Page1(key: ValueKey('3'), color: Colors.blue),
'4': (ctx) => showCupertinoDialog(
context: ctx,
builder: (ctx) => Container(
height: 200,
width: 199,
color: Colors.lightGreen,
))
},
log: true,
);
}
}
//navigators: {
//RouteTab.search: PresenterProvider<SearchPresenter>(
//key: const ValueKey('search_presenter'),
//child: OsamNavigator<SearchPresenter>(
//{SearchRoutes.first: (ctx) => const SearchOrderScreen()},
//key: const ValueKey('search_navigation'),
//),
//presenter: SearchPresenter(),
//),
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.green) {
nav.push('2');
} else if (color == Colors.yellow) {
nav.push('3');
} else if (color == Colors.blue) {
nav.push('4');
} else if (color == Colors.purple) {
// nav2.push('6');
} else {
// nav2.pop();
}
},
),
],
),
),
),
);
}
}
class NavPresenter extends Presenter with NavigationPresenter {
@override
NavigationState get navigationState => nav;
}
class NavPresenter2 extends Presenter with NavigationPresenter {
@override
NavigationState get navigationState => nav2;
}
class TabNavPresenter extends Presenter with TabNavigationPresenter {
@override
TabNavigationState get tabNavigationState => tabNav;
}
final nav = NavigationState(['1']);
final nav2 = NavigationState(['5']);
final tabNav = TabNavigationState('first');