본문 바로가기

Flutter (with 코딩셰프)

[2023.11.28] 플러터(flutter) 순한 맛 강좌 23 | Navigator.pushNamed

<< 소스 코드 - main.dart >>

import 'package:example_pjt/ScreenB.dart';
import 'package:example_pjt/ScreenC.dart';
import 'package:flutter/material.dart';
import 'package:example_pjt/ScreenA.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      //home: ScreenA(),
      initialRoute: '/',  //반드시 최초는 '/'로 지정해야함.
      routes: {
        //route의 명은 '/'로 시작해야함.
        '/': (context) => ScreenA(),  // '/'값이 눌러지면 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: <Widget>[
            ElevatedButton(
                onPressed: (){
                  Navigator.pushNamed(context, '/b');
                },
                child: Text('Go to ScreenB'),
            ),
            ElevatedButton(
              onPressed: (){
                Navigator.pushNamed(context, '/c');
              },
              child: Text('Go to ScreenC'),
            ),
          ],
        ),
      ),
    );
  }
}

 

<< 소스 코드 - ScreenB.dart >>

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

 

<< 소스 코드 - ScreenC.dart >>

import 'package:flutter/material.dart';

class ScreenC extends StatelessWidget {
  const ScreenC({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('ScreenC'),
      ),
      body: Center(
        child: Text(
          'ScreenC',
          style: TextStyle(
              fontSize: 24.0
          ),
        ),
      ),
    );
  }
}

 

<< 출력 화면 >>