새 화면 열기
Coddy Flutter 여정의 목록과 화면 섹션에 포함된 레슨. 33개 중 18번째.
앱에는 여러 화면이 있습니다. 목록 화면, 항목 하나의 세부 정보 화면, 설정 페이지 등이 있습니다. Flutter에서 화면은 위젯이며, 보통 자체 클래스에 있는 Scaffold입니다.
Navigator는 카드 더미처럼 화면을 스택에 보관합니다. 맨 위에 있는 화면이 보이는 화면입니다. Navigator.push는 새 화면을 맨 위에 올립니다.
Navigator.push(
context,
MaterialPageRoute(builder: (context) => const AboutScreen()),
);MaterialPageRoute는 휴대전화에서 화면이 전환되는 방식처럼 새 화면을 밀어 넣습니다. builder는 표시할 화면을 반환하는 함수입니다.
context는 위젯 트리에서 현재 위치를 Navigator에 알려 줍니다. 그래서 HomeScreen은 MaterialApp 내부에 독립적인 클래스로 있습니다. 이 클래스의 context를 통해 MaterialApp이 만드는 내비게이터를 찾을 수 있습니다.
챌린지
쉬움About this app 버튼은 아직 아무 동작도 하지 않습니다. Navigator.push를 사용해 AboutScreen을 열도록 만드세요.
직접 해보기
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
debugShowCheckedModeBanner: false,
home: HomeScreen(),
);
}
}
class HomeScreen extends StatelessWidget {
const HomeScreen({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Home')),
body: Center(
child: ElevatedButton(
onPressed: () {},
child: const Text('About this app'),
),
),
);
}
}
class AboutScreen extends StatelessWidget {
const AboutScreen({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('About')),
body: const Center(
child: Text('Made with Flutter'),
),
);
}
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
목록과 화면의 모든 레슨
직접 연습해 보세요: 온라인 Flutter 컴파일러