본문 바로가기

# 02/Flutter

[Flutter] in app messaging Firebase in_app_messaging (베타) 특정 사용자를 위한 맞춤형 메시지를 보내거나 사용자 행동을 기반으로 메시지를 트리거 할 수 있다. 사용자의 관심사와 브랜드 특성에 맞춰 메시지 디자인이 가능하고 디자인을 앱 업데이트 하지 않고 바꿀 수 있다. 캠페인 설정 진행상황 관리가 쉽고 메시지의 레이아웃 등을 직접 설정하여 미리보기를 통해 확인 할 수 있다. 어느 메시지가 의도한 반응을 가장 효과적으로 이끌어 내는지 알 수 있고 반복되는 캠페인 설정이나 단발성 알림 전송 모두 가능하다. 예시로 새로운 이벤트 소식이나 앱 중요 업데이트 사항 등을 전달 할 수 있다. 사용 방법 sdk 만 추가하면 된다. (단 이벤트 트리거 시 추가 개발 필요) 빈도 제한 - 기기당 1번 또는 n일 에 1번 이하로..
[Flutter] RichText RichText( text: TextSpan( text: '개인정보를 제공 받는 자: ', style: TextStyle( color: Color(0XFF666666), fontSize: 12, fontWeight: FontWeight.normal, height: 1.2, ), children: [ TextSpan( text: '(주)조이월드\n', style: TextStyle( color: Colors.black, fontSize: 12, fontWeight: FontWeight.w500, ), ), TextSpan( text: '개인정보 이용 목적: ', ), TextSpan( text: '보너스 이벤트 참여 확인 및 중복\n경품 제공 방지, 이벤트 추천 및 고객 문의 응대', style: Text..
[Flutter] GetX - Simple, Reactive 방식 비교 Simple 방식 class MyController extends GetxController { final String appBar = '마이 페이지'; int counter = 0; void increment() { counter++; update(); } } Widget _buildGetBuilder() { return GetBuilder( builder: (_) { print('-----------------_buildGetBuilder() builder'); return Text( '${_.counter}', style: textStyleWhiteBold(50), ); } ); } Widget _buildSimpleButton() { return InkWell( onTap: () { control..
[Flutter] 라이브러리 정리! Dart packages 필수 패키지 get - 상태관리 패키지. Most Likes 1위. (대체, provider, flutter_bloc) shared_preferences - 디바이스에 단순 데이터 저장. Most Likes 3위. (비슷, sqflite(SQLite), hive(nosql)) http - api 연동 패키지. Most Likes 4위. (대체, dio) url_launcher - 기본 브라우저 url 열기, 기본 이메일 앱에서 이메일 보내기, 기본 전화앱을 사용해 전화걸기, 기본 메시징 앱을 이용해서 sms 메시지 보내기 등 지원 Most Likes 5위. flutter_launcher_icons - 앱 아이콘 한번에 바꿔주는 패키지 Most Likes 9위. image_pick..
[Flutter] GetX middleware Setting Router Guards 프로필 페이지를 이동하기 전에 로그인이 안되어 있는 경우 로그인 먼저 하고 오라고 리디렉션 해준다고 생각하면 쉬움. class AuthGuard extends GetMiddleware { @override RouteSettings? redirect(String? route) { if (!AuthService.to.isLoggedInValue) return const RouteSettings(name: Routes.login); return null; } } AuthService는 로그인 체크하는 서비스임! AuthService 에서 로그인정보 확인 하여 로그인 안되있는 경우 로그인 페이지로 리디렉션! @override Widget build(BuildContext ..
[Flutter] GetX GetX 특징 GetX는 매우 가볍고 강력한 솔루션이며, 고성능 상태 관리, 지능형 종속성 주입, 라우트 관리 기능을 제공한다. GetX는 다음과 같은 3가지의 기본 원칙을 가지고 있다. 성능 성능과 리소스 소비의 최소화에 집중한다. Streams, ChangeNotifier를 사용하지 않는다. 생산성 쉽고 간결한 구문을 사용한다. 사용하지 않는 리소스는 메모리에서 자동으로 제거해준다. 따라서 개발자가 메모리에서 컨트롤러를 제거하는 것을 신경쓰지 않아도 된다. 조직화 화면, 프레젠테이션 로직, 비즈니스 로직, 종속성 주입, 네비게이션을 완전히 분리할 수 있다. 라우트(Route) 관리 라우트간 이동 또는 다이얼로그 띄울 때 context가 필요하다. GetX사용하면 context 없이 라우트 관리 가능...
[Flutter] Row/Text OverFlow 인 경우 다음 라인으로 넘기기 text overflow in new line in flutter Row( children: [ SvgPicture.asset( 'assets/icons/info_grey.svg', width: ScreenUtil().setWidth(18), ), SizedBox(width: ScreenUtil().setWidth(4)), Text( 'Flutter는 하나의 코드베이스로 모바일, 웹, 데스크톱에서 네이티브로 컴파일 되는 구글의 아름다운 UI 툴킷입니다.', style: TextStyle( color: Color(0XFF666666), fontSize: ScreenUtil().setSp(11), fontWeight: FontWeight.w400, height: 16/11 ) ) ], ), 오버 플로우! R..
[Flutter] 페이지 한 개만 두고 모두 닫기 remove routes! 페이지 여러개 쌓여 있을 때 맨 밑에 페이지만 두고 모두 지우고 싶을 때! Navigator.of(context).popUntil((route) => route.isFirst); 페이지 이동할 때 쌓인 페이지 다 지우고 이동하고 싶을 때! Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (context) => LoginScreen()), (Route route) => false),