🟨 1. Flask 백엔드: 플랫폼 분기 추가✅ 수정된 /check_update APIfrom flask import Flask, request, jsonifyapp = Flask(__name__)LATEST_VERSION = "1.2.0"MIN_SUPPORTED_VERSION = "1.0.0"UPDATE_URLS = { "android": "https://play.google.com/store/apps/details?id=com.example.app", "ios": "https://apps.apple.com/app/id1234567890"}def version_compare(v1, v2): return list(map(int, v1.split("."))) >= list(map(int,..
Flutter의 ChangeNotifierProvider를 이용하여 notifyListeners()를 호출하면 여러 위젯에서 변경 사항을 감지하고 리프레시할 수 있습니다.다음은 ChangeNotifierProvider를 사용하여 refresh 요청을 여러 위젯에서 감지하도록 구현한 코드입니다.📌 구현 목표RefreshProvider를 생성하여 상태 관리refresh() 호출 시 모든 Consumer 위젯이 갱신됨FloatingActionButton을 눌러 데이터 리프레시📌 코드1️⃣ main.dartimport 'package:flutter/material.dart';import 'package:provider/provider.dart';void main() { runApp( ChangeNot..
Flutter에서 네이티브 코드를 추가하는 방법은 플랫폼별(Android, iOS)로 나뉘며, 보통 플러그인을 직접 개발하거나, 기존 네이티브 기능을 호출하는 방식으로 진행됩니다.1. Method Channel을 사용하여 네이티브 코드 호출Flutter에서 네이티브(Android/iOS) 기능을 호출하는 가장 일반적인 방법은 Method Channel을 사용하는 것입니다.1.1 Method Channel 기본 개념Flutter에서 MethodChannel을 통해 Dart와 네이티브(Android, iOS) 코드 간에 메시지를 주고받습니다.Dart에서 특정 메서드를 호출하면, 네이티브 코드에서 해당 메서드를 처리한 후 결과를 반환합니다.2. Android 네이티브 코드 추가 (Kotlin)2.1 Metho..
Flutter에서 서로 떨어진 위젯 간에 데이터를 주고받는 방법은 여러 가지가 있습니다. 상황에 맞는 방법을 선택하면 됩니다.1. InheritedWidget / InheritedModel특징: 하위 위젯에서 변경 사항을 감지하고 UI를 다시 빌드할 수 있음.사용 예시: 앱 전반에서 공유해야 하는 설정, 테마 등.class MyInheritedWidget extends InheritedWidget { final int counter; const MyInheritedWidget({ Key? key, required this.counter, required Widget child, }) : super(key: key, child: child); static MyInheritedWidg..
Flutter 앱에서 백엔드 서버의 알림을 받는 일반적인 방법은 다음과 같습니다:1. Firebase Cloud Messaging (FCM) 사용 (추천)Firebase Cloud Messaging(FCM)을 사용하면 iOS 및 Android에서 푸시 알림을 쉽게 받을 수 있습니다.설치 및 설정Firebase 프로젝트 생성 및 앱 추가firebase_core 및 firebase_messaging 패키지 추가dependencies: firebase_core: latest_version firebase_messaging: latest_versionFirebase 초기화await Firebase.initializeApp();알림 권한 요청 (iOS)FirebaseMessaging messaging = Fi..
📌 1. String Extensionsextension StringExtensions on String { /// 첫 글자를 대문자로 변환 String capitalize() { if (isEmpty) return this; return this[0].toUpperCase() + substring(1); } /// 문자열이 이메일 형식인지 확인 bool isValidEmail() { final regex = RegExp(r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'); return regex.hasMatch(this); } /// 숫자로 변환 (실패하면 0 반환) int toInt({int defaultValue = 0..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.