플러터 순한맛 강좌 - 네비게이터 와 푸시네임드 메소드

원종인·2022년 7월 1일
0

Flutter 공부

목록 보기
8/13

다음 코드는 코딩셰프의 수업을 바탕으로 작성되었습니다.
플러터(flutter) 순한맛 강좌 23 | 네비게이터(Navigator) 와 푸시네임드 메소드(pushNamed method)

이번 코드는 파일을 별도로 만들어서 페이지 전환이 된다.

main.dart

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(),
      },
    );
  }
}

ScreenA.dart

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');
                }),
          ],
        ),
      ),
    );
  }
}

ScreenB.dart

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,
          ),
        ),
      ),
    );
  }
}
profile
아직 대학생입니다

0개의 댓글