์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
- BFS
- realm
- rxcocoa
- TCA
- BOJ
- SnapKit
- visionOS
- designpattern
- combine
- swift
- Swfit
- reactorkit
- XCTest
- ๋ฐฑ์ค
- Lv2
- ios
- RxSwift
- tableView
- Xcode
- CollectionView
- raywenderlich
- UIKit
- arkit
- node.js
- Kuring
- MVVM
- ํ๋ก๊ทธ๋๋จธ์ค
- Flutter
- ํจ์คํธ์บ ํผ์ค
- SwiftUI
- Today
- Total
lgvv98
[flutter] 22๊ฐ | Navigator ์ดํดํ๊ธฐ ๋ณธ๋ฌธ
[flutter] 22๊ฐ | Navigator ์ดํดํ๊ธฐ
๐ฅ ์บ๋ฟ๋งจ 2021. 8. 16. 12:54โ ์ด๋ฒ์๊ฐ์๋ ๋ค๋น๊ฒ์ดํฐ๋ฅผ ์ด์ฉํด ํ๋ฉด ์ ํํ๊ธฐ + ์ปจํ ์คํธ์ ๋ํด์ ์์๋ณผ ์์ ์ด์ผ
โ Navigator ๋ฐ ํฌ์คํ ์ ์์
1. Route์ ๊ฐ๋
- ์ค๋งํธํฐ์์ ๋ณด์ฌ์ง๋ ํ๋์ ํ์ด์ง ํ๋ฉด !
2. Navigator์ ์ ์์ push, pop ํจ์, stack ์๋ฃ๊ตฌ์กฐ
- stack ( FILO )
- push ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ธฐ
- pop ๋ฐ์ดํฐ๋ฅผ ๋นผ๊ธฐ
- Route(ํ์ด์ง) ๋ Navigator๋ผ๋ ์์ ฏ์ด ๋ด๋นํ๊ณ ๊ทธ ๊ตฌ์กฐ๋ ์คํ ๊ตฌ์กฐ์ด๋ค.
3. MaterialPageRoute์์ ฏ๊ณผ context
- ํ๋ฉด์ ํํ ๋, ๋ฐ๋ก class ์ ๋ ฅํด์ ์ด๋ํ๋ ๊ฒ์ด ์๋๋ผ ํ๋ฉด์ ์ง์ ํด์ฃผ๋ฉด์ ์ด๋ํ๋ค.
4. ํ์ด์ง ์ด๋ ๊ธฐ๋ฅ ๊ตฌํ ์์ฑ
โ ์ฝ๋ ๋ฆฌ๋ทฐ
import 'package:flutter/material.dart'; // ๋ฐ์คํฌํ, ์ฑ ๋ฑ์ ๊ณ ๋ฃจ UI๋ฅผ ์ ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ๊ตฌ๊ธ์ด ์ ๊ณตํด์ฃผ๋ ํจํค
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
// ์ค์ง์ ์ผ๋ก ๋ชจ๋ ์ฑ์ ๊ฐ์ธ๊ณ ์๋ค.
title: 'Appbar', // ์ฑ์ ์ด์นญํ๋ ์ด๋ฆ -> ์ค๋งํธ ํฐ ์ฑ์์ ์ต๊ทผ ์ฌ์ฉํ ์ฑ ๋ณด์ฌ์ค ๋์ ์ด๋ฆ
theme:
ThemeData(primarySwatch: Colors.blue // ํน์ ์์ ์์ฉ๋ค์ ๊ธฐ๋ณธ ์์์ผ๋ก ์ง์ ํด์ ์ฌ์ฉํ๊ฒ
),
home: MyPage(), // home์ ์ฑ์ด ์คํ๋ ๋ ๊ฐ์ฅ๋จผ์ ๋ณด์ฌ์ฃผ๋ ํ์ด
);
}
}
class MyPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('First page'),
),
body: Center(
child: ElevatedButton(
child: Text('Go to the Second page'),
onPressed: () {
Navigator.push(context,MaterialPageRoute( // ํ์ด์ง ์ด๋์ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋๋ก์ด๋ ํ์ด์ง ์ด๋ ์ฌ์ฉ
builder: (BuildContext context) {
return SecondPage();
}
));
},
),
),
);
}
}
class SecondPage extends StatelessWidget {
const SecondPage({Key? key}) : super(key: key);
@override
Widget build(BuildContext ctx) {
return Scaffold(
appBar: AppBar(
title: Text('Second page'),
),
body: Center(
child: ElevatedButton(
child: Text('Go to the First page'),
onPressed: () {
Navigator.pop(ctx);// ์์ ์ด ์ฌ๋ผ์ง๋ฉด ์์ ์๋์ ๋ค๋น๊ฒ์ดํฐ ์คํ์ผ๋ก ์ด๋
},
),
),
);
}
}
๐ธ onPressed ๋ค์๊ณผ ๊ฐ์ด ๋ฐ๊ฟ ์ ์๋ค.
'flutter > ์ํ๋ง(๊ธฐ์ด)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[flutter] 24๊ฐ | Collection๊ณผ Generic (0) | 2021.08.16 |
---|---|
[flutter] 23๊ฐ | Navigator ์ pushName ๋ฉ์๋ ์ดํดํ๊ธฐ (0) | 2021.08.16 |
[flutter] 21๊ฐ | Column, Row ์์ ฏ (0) | 2021.08.16 |
[flutter] 20๊ฐ | ์ปจํ ์ด๋ ์์ ฏ (container widget) ๋์ง์ด ๋ณด๊ธฐ. (0) | 2021.08.13 |
[flutter] 19๊ฐ | ๋น๋ ์์ ฏ ์์ด ์ค๋ต๋ฐ ๋ง๋ค๊ธฐ ๋ฐ ํ ์คํธ ๋ฉ์์ง (0) | 2021.08.13 |