다음 코드는 코딩셰프의 수업을 바탕으로 작성되었습니다.
플러터(flutter) 순한맛 강좌 23 | 네비게이터(Navigator) 와 푸시네임드 메소드(pushNamed method)
이번 코드는 파일을 별도로 만들어서 페이지 전환이 된다.
import 'package:flutter/material.dart';
import 'package:flutter_project_7/ScreenA.dart';
import 'package:flutter_project_7/ScreenB.dart';
import 'package:flutter_project_7/ScreenC.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Navigator',
theme: ThemeData(
primarySwatch: Colors.red,
),
initialRoute: '/', // 플러터는 초기 이름을 /로 지어뒀음
routes: {
'/' : (context) => ScreenA(),
'/b' : (context) => ScreenB(),
'/c' : (context) => ScreenC(),
},
);
}
}
import 'package:flutter/material.dart';
class ScreenA extends StatelessWidget {
const ScreenA({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('ScreenA'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
RaisedButton(
color: Colors.red,
child: Text('Go to ScreenB'),
onPressed: (){
Navigator.pushNamed(context, '/b');
}),
RaisedButton(
color: Colors.red,
child: Text('Go to ScreenC'),
onPressed: (){
Navigator.pushNamed(context, '/c');
}),
],
),
),
);
}
}
ScreenC도 ScreenB와 동일하다.
import 'package:flutter/material.dart';
class ScreenB extends StatelessWidget {
const ScreenB({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('ScreenB'),
),
body: Center(
child: Text(
'ScreenB',
style: TextStyle(
fontSize: 24.0,
),
),
),
);
}
}