Skip to content

Route

MaterialApp에서 사용할 수 있는 중요한 속성 중 일부는 initialRoute, routes, onGenerateRoute, onUnknownRoute 등입니다.

initialRoute

initialRoute는 앱이 처음 시작될 때 표시할 경로를 정의합니다. 앱이 시작될 때 기본적으로 표시될 화면을 설정하는 데 사용됩니다.

dart
void main() {
  runApp(MaterialApp(
    initialRoute: '/home',
    routes: {
      '/': (context) => WelcomeScreen(),
      '/home': (context) => HomeScreen(),
      '/settings': (context) => SettingsScreen(),
    },
  ));
}

routes

routes는 앱에서 사용될 명명된 경로와 해당하는 위젯을 정의하는 맵입니다. 명명된 경로를 통해 손쉽게 화면 전환을 할 수 있습니다.

dart
void main() {
  runApp(MaterialApp(
    initialRoute: '/',
    routes: {
      '/': (context) => FirstScreen(),
      '/second': (context) => SecondScreen(),
      '/third': (context) => ThirdScreen(),
    },
  ));
}

onGenerateRoute

onGenerateRoute는 동적으로 라우트를 생성할 때 사용됩니다. 주어진 경로 이름에 따라 적절한 화면을 반환하는 함수입니다.

dart
void main() {
  runApp(MaterialApp(
    initialRoute: '/',
    onGenerateRoute: (settings) {
      switch (settings.name) {
        case '/':
          return MaterialPageRoute(builder: (context) => FirstScreen());
        case '/second':
          return MaterialPageRoute(builder: (context) => SecondScreen());
        case '/third':
          return MaterialPageRoute(builder: (context) => ThirdScreen());
        default:
          return MaterialPageRoute(builder: (context) => UnknownScreen());
      }
    },
  ));
}

class UnknownScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Unknown Screen'),
      ),
      body: Center(
        child: Text('Unknown route!'),
      ),
    );
  }
}

onUnknownRoute

onUnknownRoute는 정의되지 않은 경로를 탐색하려 할 때 호출됩니다. 이를 통해 오류 처리 화면을 표시할 수 있습니다.

dart
void main() {
  runApp(MaterialApp(
    initialRoute: '/',
    routes: {
      '/': (context) => FirstScreen(),
      '/second': (context) => SecondScreen(),
    },
    onUnknownRoute: (settings) {
      return MaterialPageRoute(builder: (context) => UnknownScreen());
    },
  ));
}