JAVA를 JAVA라

[플러터] 새 페이지 생성시 본문

JAVA/열일하는 블로그

[플러터] 새 페이지 생성시

샛별KIM 2022. 2. 17. 12:36

1. 페이지의 클래스 가장 상단에 routeName 추가

static String routeName = "/second_page";

 

2. routes.dart에 양식에 맞추어 routeName을 부를 때 불러오는 페이지 정의

 

3. userId와 userName은 메인페이지에 미리 정의해두었기 때문에

메인 페이지에서 불러오는 자식들인 Tab의 ~~~Page() 에서 값을 불러와 사용할 수 있음

extends State<StatefulWidget> 클래스에 불러오는 내용 추가

late String userId;
late String userName;

@override
void didChangeDependencies() {
  super.didChangeDependencies();

  final Map arguments = ModalRoute.of(context)?.settings.arguments as Map;
  if (arguments != null) {
    userId = arguments["userId"] as String;
    userName = arguments["userName"] as String;
  }
}

 

4. 예시용 풀 코드

import 'package:flutter/material.dart';

class SecondPage extends StatefulWidget {
  static String routeName = "/second_page";
  const SecondPage({Key? key}) : super(key: key);

  @override
  _SecondPage createState() => _SecondPage();
}

class _SecondPage extends State<StatefulWidget> {
  late String userId;
  late String userName;

  @override
  void didChangeDependencies() {
    super.didChangeDependencies();

    final Map arguments = ModalRoute.of(context)?.settings.arguments as Map;
    if (arguments != null) {
      userId = arguments["userId"] as String;
      userName = arguments["userName"] as String;
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text("두번째 페이지"),
            Text("$userName 님"),
          ],
        ),
      ),
    );
  }
}
Comments