본문 바로가기

Programming/Dart & Flutter

Flutter 3일 차 - Flutter for iOS devs (3/8), Navigation

반응형

https://flutter.dev/docs/get-started/flutter-for/ios-devs#navigation

How do I navigate between pages?

iOS 에서 view controllers 사이 이동을 하려면, 화면 표시를 하는 view controllers 의 스택을 관리하는 UINavigationController 를 사용할 수 있다.

 

Flutter 에서는 Navigator, Routes 를 사용하여 비슷하게 구현한다.

Route 는 앱의 screen, page 의 추상적인 개념이다.

Navigator 는 routes 를 관리하는 위젯이다.

route 는 거의 UIViewController 와 일치한다.

navigator 는 iOS UINavigationController 와 유사하게 동작한다. 새로운 뷰로 이동할 것인지 뒤로 갈 것인지에 따라서 push(), pop() 을 사용할 수 있다.

 

페이지 사이를 이동하기 위해서는 두가지 옵션이 있다.

  • 특정한 route name 을 지정한다.
  • route 로 바로 이동한다.

Navigator 에 route 의 이름을 넣어줌으로써 route 로 이동한다.

Navigator class 는 플루터에서 라우팅을 다룬다. stack 에 넣어둔 route 를 다시 빼내는데 이용된다.

push() 리턴값은 Future 의 완료를 기다리면서 완료한다. 

How do I navigate to another app?

https://flutter.dev/docs/get-started/flutter-for/ios-devs#how-do-i-navigate-to-another-app

 

iOS 에서는 유저를 다른 앱으로 이동시키려면 URL scheme 을 사용한다.

flutter 에서 이 기능을 구현하기 위해서는 네이티브 플랫폼 코드를 통합하거나 url_launcher 와 같은  plugin 을 사용한다.

How do I pop back to the iOS native viewcontroller?

https://flutter.dev/docs/get-started/flutter-for/ios-devs#how-do-i-pop-back-to-the-ios-native-viewcontroller

 

Dart 코드에서 SystemNavigator.pop() 을 호출하면 iOS 코드로 이렇게 된다.

(keyWindow.rootViewController 가 UINavigationController 이면 pop 을 한다.)

 

만약 원하는대로 안 된다면 임시적인 iOS code 를 호출할 수 있는 platform channel 을 만들 수 있다.

 

 

반응형