목록플러터 (24)
아무나 빌려가세요
PUSH알림을 통해 받은 데이터를 통해 페이지를 이동하는 방법을 적어본다. onesignal 홈페이지에서 구독된 유저에게 알림 테스트를 해볼 수 있다. New Push를 선택하면 알림을 보낼 수 있는 페이지가 나온다. 타이틀과 메시지를 적어준 후 구독된 전부에게 보내거나 내가 만든 집단에게 보낼 수 있다. 메시지 이외에 객체로 된 데이터를 보낼 수 있다. 이 데이터를 이용하여 알림클릭시 페이지가 이동하도록 설정한다. setNotificationOpenedHandler를 이용하여 어떤 데이터가 오는지 확인한다. custom: {"a":{"notice":"15"},"i":} //여기서 내가보낸 데이터를 추출할 수 있다. json파일을 객체로 변환후 switch문으로 분기를 나눈다. var custom = j..
json파일을 직렬화 해주는 사이트들이 많지만 배열로 묶여있는 형태는 제대로 안나오는 경우가 있다. 구글링을 한 끝에 방법을 찾았다. 방법은 직렬화된 클래스를 리스트로 선언하는 클래스를 하나 더 만들어야 한다. class List { List({required this.supports}); List list; //클래스를 타입으로 하는 리스트 변수를 생성한다. } fromJson을 설정할땐 json또한 List로 선언한다. factory List.fromJson(List json) { List jsonlist = []; jsonlist = json.map((i) => Support.fromJson(i)).toList(); return List(list: jsonlist); api를 받은 함수안에서 클래스..
구독된 유저의 고유Id를 추출하는 방법과 알림메세지 제목,내용을 받는방법을 써본다. 유저ID를 받는 방법은 두가지가 있다. getDeviceState 와 SubscribeObserver 함수를 사용한다. getDeviceState는 어떤 이유에선지 처음엔 무조건 null값을 출력하고 그다음부턴 userid를 출력한다. 처음부터 userId를 출력하려면 SubscribeObserver 를 사용해야 한다. OneSignal.shared .setSubscriptionObserver((OSSubscriptionStateChanges changes) async { print('permission change::::::::::::::::${changes.to.userId}'); //userID 출력 }); 알림메시..
푸쉬알림은 파이어베이스에 제공하는 방법도 있지만 oneSignal이 훨씬 적용하기 쉬운것같아 글을 쓴다. 1. 먼저 https://app.onesignal.com/apps 에 접속해 회원가입을하고 푸쉬알림을 적용하고자 하는 앱을 만든다. 2. 상단 Settings 클릭후 NATIVE APP Platform 에서 구글과 애플 항목을 활성화 한다. (애플은 p.12파일 필요, 구글은 파이어베이스의 serverkey가 필요하다. 3. https://pub.dev/packages/onesignal_flutter [onesignal_flutter | Flutter Package OneSignal is a free push notification service for mobile apps. This plugin m..
Navigator.push에서 then을 추가하고 setState를 적용한다. setState가 실행됨에 따라 새로고침이 되는 방식이다. 이동된 페이지에선 Navigator.pop을 해주면 된다. Navigator.push(context, MaterialPageRoute(builder: (context) => moveToPage())) .then((value) { setState(() {}); }); 첫번째 위젯에서 두번째 위젯을 return하고 세번째 위젯에서 Navigator.pop을 하는 경우 첫번째 위젯을 새로고침 하기 위해선 다른 방법이 있다. 첫번째 위젯에 위의 push를 함수의 형태로 두번째 위젯에 전달한다. firstWidget ... Container( child : secondWidge..
사용 패키지 https://pub.dev/packages/http/install import 'dart:convert'; api를 받아오기 위해선 future 클래스를 만들어야 한다 class API { static Future function() async { //비동기 함수 var uri = Uri.parse("api의 주소를 이곳에 입력한다."); var res = await http.get(uri, headers: { "Client-Id": "ID", "Client-Secret": "Secret key" }); //api에서 제공하는 header주소를 입력한다. if (res.statusCode == 200) { //통신이 성공했을때 var responseBody = utf8.dec..
사용 패키지 https://pub.dev/packages/carousel_slider https://pub.dev/packages/youtube_player_flutter 유튜브 주소를 list에 담는다 List youtubePaths = ['videoId', 'videoId', 'videoId']; carouselSlider를 적용한다 CarouselSlider.builder( itemCount: youtubePaths.length, //슬라이더의 길이를 정함 options: CarouselOptions( viewportFraction: 1.0, // 화면을 꽉 채움 autoPlay: false, onPageChanged: (index, reason) { se..
스크롤을 조절하기 위해 변수를 선언한다. final _scrollController = ScrollController(); 투명도를 조절하기 위한 함수를 선언한다. double scrollOpacity = 1.0; // 첫시작은 전부 보이게 설정한다. onScroll() { setState(() { double offset = _scrollController.offset; if (offset 100) { offset = 100; } scrollOpacity = 1 - offset / 100; // 스크롤을 올릴때마다 0으로 수렴한다. 1을 빼지 않으면 반대로 적용 }); } 함수를 스크롤에 리스너로 등록한다 @override void ..