본문 바로가기
프로그래밍/Flutter-Dart

[Flutter] get package (2)

by 채연2 2021. 3. 25.

경로 관리

GetMaterialApp(
  home: MyHome(),
)

▶ MaterialApp 앞에 "Get"을 추가하여 GetMaterialApp으로 변경

 

 

 

Get.to(NextScreen());

▶ 새 화면으로 이동

 

 

 

Get.toNamed('/details');

▶ 이름이 있는 새 화면으로 이동

 

 

 

Get.back();

▶ snackbars, dialogs, bottomsheets를 닫으려면 Navigator.pop(context)를 썼음

 

 

 

Get.off(NextScreen());

▶ 다음 화면으로 이동. 단, 이전 화면으로 돌아가는 옵션이 없는 경우 (예 : Splash 화면, 로그인 화면 등)

 

 

 

Get.offAll(NextScreen());

▶ 다음 화면으로 이동. 단, 이전 경로를 모두 취소하는 경우 (예 : 장바구니, 투표 및 테스트 등)

 

 

 

번역

Text('title'.tr);

▶ .tr을 붙이면서 Get.locale, Get.fallbackLocale의 현재 값을 사용하여 변환

 

 

 

var products = [];
Text('singularKey'.trPlural('pluralKey', products.length, Args));

▶ 단수 및 복수로 번역 사용

 

 

 

import 'package:get/get.dart';


Map<String, Map<String, String>> get keys => {
    'en_US': {
        'logged_in': 'logged in as @name with email @email',
    },
    'es_ES': {
       'logged_in': 'iniciado sesión como @name con e-mail @email',
    }
};

Text('logged_in'.trParams({
  'name': 'Jhon',
  'email': 'jhon@example.com'
  }));

▶ 매개 변수와 함께 번역 사용

 

 

 

 

locale

var locale = Locale('en', 'US');
Get.updateLocale(locale);

▶ Get.updateLocale()로 locale 업데이트 시, 번역에서 자동으로 새 locale 사용

 

 

 

return GetMaterialApp(
    locale: Get.deviceLocale,
);

▶ Get.deviceLocale 이용해 시스템 locale 가져오기

 

 

 

observables

final name = 'GetX'.obs;
name.value = 'Hey';

▶ .value : 값이 현재 값과 다른 경우에만 스트림 업데이트

 

name('Hello'); //(1)
name() ;       //(2)

▶ (1) Hello 반환. 다음과 같은 접근 방식은 null 허용하지 않음. UI도 rebuild 되지 않음

▶ (2) getter와 같으며, Hello 출력

 

final flag = false.obs;
flag.toggle();

▶ true/false 사이에서 값 전환

 

flag.nil();

▶ 값을 null로 설정

 

final abc = [0,1,2].obs;
print('json: ${jsonEncode(abc)}, type: ${abc.runtimeType}');
//출력 : json:[0,1,2], type:RxList<int>

▶ Json은 모든 Rx 유형에서 지원됨

 

class User {
    String name, last;
    int age;
    User({this.name, this.last, this.age});

    @override
    String toString() => '$name $last, $age years old';
}

final user = User(name: 'John', last: 'Doe', age: 33).obs;
user.value.name = 'Roi';

▶ user.value.name = '' 와 같이 내부 변수 변경. 하지만 위젯이 rebuild 되지 않음.

 

user.refresh();

▶ 사용자 정의 클래스의 경우 refresh()와 같이 변경 사항을 수동으로 알려줘야 함

 

user.update((value){
  value.name='Roi';
});

▶ update() 사용하여 값 변경 가능

 

 

 

 

pub.dev/packages/get#about-get

 

320x100

'프로그래밍 > Flutter-Dart' 카테고리의 다른 글

[Flutter] Shared preferences  (0) 2021.03.25
[Flutter] cached_network_image  (0) 2021.03.25
[Flutter] get package (1)  (0) 2021.03.24
[Flutter] GestureDetector  (0) 2021.03.24
[Flutter] Bluetooth  (0) 2021.03.24

댓글