본문 바로가기

일::개발

Flutter: You need to use a Theme.AppCompat theme (or descendant) with this activity

네이버 로그인 (https://pub.dev/packages/flutter_naver_login)을 구현하다 보니

 

E/MethodChannel#flutter_naver_login( 7529): java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.

 

이런 에러가 나와버렸는데, 꼭 네이버 로그인에서만 발생하는 문제는 아니고, 카카오 로그인에서 나오는 경우도 있고 그렇다.

 

이것은 Android Activity(이 경우에는 네이버 로그인에서 사용하는)에 AppCompat theme이 적용되어야 하기 때문이다.

간단하게 수정하고자 하면 styles.xml 에서 Normal Theme의 parent를 @android:style/Theme.Light.NoTitleBar에서  Theme.AppCompat.DayNight.NoActionBar 로 바꿔주면 된다.

 

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
    <style name="LaunchTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
        <!-- Show a splash screen on the activity. Automatically removed when
             Flutter draws its first frame -->
        <item name="android:windowBackground">@drawable/launch_background</item>
    </style>
    <!-- Theme applied to the Android Window as soon as the process has started.
         This theme determines the color of the Android Window while your
         Flutter UI initializes, as well as behind your Flutter UI while its
         running.
         
         This Theme is only used starting with V2 of Flutter's Android embedding. -->
    <style name="NormalTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
        <item name="android:windowBackground">?android:colorBackground</item>
    </style>
</resources>