FrameWork/Flutter

Navigator을 통한 화면 전환과 위젯 필수 매개변수 받기

jheaon 2023. 11. 10. 01:30

 

이번에는 Navigator을 이용한 화면전환과, 위젯에서 필수 매개변수를 받는 방법에 대해서 정리해보고자 한다. 


 

목차
1.Navigator을 이용한 화면전환
2.위젯 필수 매개변수로 받기

Navigator을 이용한 화면전환

플러터에서는 Navigator의 push() 메소드를 통해 화면전환이 가능하다. Navigator.push()에 전환할 페이지를 MaterialPageRoute()에 넣어주면 된다. 

 

- main.dart

Navigator.push(context, MaterialPageRoute(builder: (context) => FirstScreen()));

 

 

다음은 화면 전환의 예제이다. 만약에 전환할 페이지에 매개변수를 넘겨야 한다면, 전환할 페이지의 ()안에 매개변수를 적어서 넘겨주면 된다.

 

- main.dart

import 'package:flutter/material.dart';
import 'package:practice/project1/result.dart';

class project1 extends StatefulWidget {
  const project1({super.key});

  @override
  State<project1> createState() => _project1State();
}

class _project1State extends State<project1> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: const Text("비만도 계산기"),
        ),
        body: Padding(
          // 패딩은 이렇게 줍니다.
          padding: const EdgeInsets.all(8.0),
          child: Form(
            child: Column(
              // 정렬 방향 조정
              crossAxisAlignment: CrossAxisAlignment.end,
              children: [
                TextFormField(
                  decoration: const InputDecoration(
                    border: OutlineInputBorder(),
                    hintText: "키",
                   ),
                  //keyboardType으로 키보드를 뭘로 지정할껀지 가능
                  keyboardType: TextInputType.number,
                ),
                // 빈 공간은 SizeBox로 처리한다.
                const SizedBox(height: 8,),
                TextFormField(
                  decoration: const InputDecoration(
                    border: OutlineInputBorder(),
                    hintText: "몸무게",
                  ),
                  keyboardType: TextInputType.number,
                ),
                const SizedBox(height: 8,),
                ElevatedButton(
                  onPressed: (){
                    Navigator.push(
                      context,
                        MaterialPageRoute(builder: (context) => const Resultscreen(
                            height: 180,
                            weight: 77.5
                        ),)
                    );
                  },
                  child: Text('결과'),
                ),
              ],
            ),
          ),
        )

    );
  }
}

 

 

 

 

 

위젯 필수 매개변수로 받기

만약 위젯에 매개변수를 받아야 한다면, 이를 다음과 같이 작성이 가능하다. 다음은 Stateless 위젯에서 매개변수를 받는 예제인데, height, weight 두 개 변수를 만들고, required을 이용하여 필수로 매개변수를 받도록 조정한다. 

 

- main.dart

import 'package:flutter/material.dart';

class Resultscreen extends StatelessWidget {
  final double height;
  final double weight;

  const Resultscreen({super.key, required this.height, required this.weight});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: const Text('결과'),
        ),
        body: const Center(
            child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(
              "정상",
              style: TextStyle(fontSize: 36),
            ),
            Icon(Icons.sentiment_satisfied, color: Colors.green, size: 100),
          ],
        )));
  }
}

'FrameWork/Flutter'의 다른글

  • 현재글 Navigator을 통한 화면 전환과 위젯 필수 매개변수 받기

관련글