아래와 같이 route를 작성하고 관리합니다.
import 'package:flutter/material.dart';
import '페이지 경우';
const String #페이지#Route = "login";
class CustomRouter {
static Route<dynamic> generatedRoute(RouteSettings settings) {
switch (settings.name) {
case #페이지#Route:
return MaterialPageRoute(builder: (_) => #페이지#Page());
# 페이지 이동 시 파라미터를 넘길 경우
case #페이지#Route:
return MaterialPageRoute(
builder: (_) => #페이지#Page(
pageType: settings.arguments,
));
}
}
}
import 'package:flutter/material.dart';
import 'screens/login/login.dart';
import 'screens/home/home.dart';
class CustomRouter {
static const String loginRoute = "login";
static const String homeRoute = "home";
static Route<dynamic> generatedRoute(RouteSettings settings) {
switch (settings.name) {
case loginRoute:
return MaterialPageRoute(builder: (_) => LoginPage());
case homeRoute:
return MaterialPageRoute(builder: (_) => HomePage());
case ReaderRoute:
return MaterialPageRoute(
builder: (_) => ReaderPage(
screenArguments: settings.arguments,
));
}
}
}
MyApp MaterialApp Route 추가
import 'routes.dart';
@override
Widget build(BuildContext context) {
if (checkLogin) {
initialRoute = homeRoute;
} else {
initialRoute = loginRoute;
}
return MaterialApp(
.....
.....
onGenerateRoute: CustomRouter.generatedRoute,
initialRoute: initialRoute, // loginRoute or homeRoute,
);
}
// 위젯의 콜백
onPressed: () {
// Named route를 사용하여 화면으로 전환합니다.
Navigator.popAndPushNamed(context, homeRoute);
}
onPressed: () {
// 현재 route를 스택에서 제거함으로써 이 스크린으로 되돌아 갑니다.
Navigator.pop(context);
}