로그아웃 SDK 대기 제거 · 온보딩 국가 시트 · 프로필 머리줄

This commit is contained in:
Sn-Kinos
2026-10-06 04:47:37 +09:00
parent 976e569a56
commit 40756d5c86
21 changed files with 277 additions and 43 deletions
@@ -4,6 +4,10 @@ import android.app.NotificationChannel
import android.app.NotificationManager
import android.os.Bundle
import io.flutter.embedding.android.FlutterFragmentActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
import java.text.Collator
import java.util.Locale
// Health Connect 권한 요청(health 플러그인)이 `registerForActivityResult` 를 쓰므로 FragmentActivity 여야 한다.
class MainActivity : FlutterFragmentActivity() {
@@ -29,4 +33,25 @@ class MainActivity : FlutterFragmentActivity() {
)
)
}
/**
* 국가 표시명 — 앱 언어로 OS 가 아는 이름(`Locale.getDisplayCountry`)을 OS 정렬(`Collator`) 순서로 준다.
* 국가 이름을 앱이 번역하지 않으려는 통로다(Dart `loadCountryNames`). 결과는 `[[코드, 이름], …]`.
*/
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "kr.co.fanuzu.app/locale")
.setMethodCallHandler { call, result ->
if (call.method != "countryNames") {
result.notImplemented()
return@setMethodCallHandler
}
val locale = Locale.forLanguageTag(call.argument<String>("locale") ?: "ko")
val collator = Collator.getInstance(locale)
val pairs = Locale.getISOCountries()
.map { listOf(it, Locale("", it).getDisplayCountry(locale)) }
.sortedWith(compareBy(collator) { it[1] })
result.success(pairs)
}
}
}