Перезапуск приложения Flutter при изменении ориентации только на Android

#flutter

Вопрос:

У меня есть довольно большое приложение, которое я создаю в Flutter как для Android, так и для iOS.

В настоящее время у меня проблема, из-за которой приложение полностью перезапускается при повороте устройства, только на Android. На iOS это работает нормально?

Я попытался посмотреть, делает ли он то же самое в приложении счетчика по умолчанию, но оно вращается и сохраняет состояние в порядке.

Я не могу воспроизвести проблему в приложении счетчика по умолчанию.

Я взглянул на манифест, чтобы посмотреть, нет ли там чего-нибудь странного, но для меня все выглядит нормально, я видел, что android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" тег изменений отсутствует, поэтому я повторно добавил его, но безрезультатно?

Я понятия не имею, почему мое приложение будет нормально работать на iOS, но не на Android? Исходя из собственного разработчика Android, я знаю, что Android может быть немного неудобно обрабатывать вращения.

У кого-нибудь есть какие-нибудь идеи, с чего я могу начать поиски преступника?

AndroidManifest.xml

     <application
        android:label="Some app"
        android:icon="@mipmap/ic_launcher"
        android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
        android:networkSecurityConfig="@xml/network_security_config">
        <activity
            android:name=".MainActivity"
            android:hardwareAccelerated="true"
            android:launchMode="singleTop"
            android:theme="@style/LaunchTheme"
            android:windowSoftInputMode="adjustResize">

            <meta-data
                android:name="io.flutter.network-policy"
                android:resource="@xml/network_security_config" />

            <!-- Specifies an Android theme to apply to this Activity as soon as
                 the Android process has started. This theme is visible to the user
                 while the Flutter UI initializes. After that, this theme continues
                 to determine the Window background behind the Flutter UI. -->
            <meta-data
                android:name="io.flutter.embedding.android.NormalTheme"
                android:resource="@style/NormalTheme" />
            <!-- Displays an Android View that continues showing the launch screen
                 Drawable until Flutter paints its first frame, then this splash
                 screen fades out. A splash screen is useful to avoid any visual
                 gap between the end of Android's launch screen and the painting of
                 Flutter's first frame. -->
            <meta-data
                android:name="io.flutter.embedding.android.SplashScreenDrawable"
                android:resource="@drawable/launch_background" />
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

        </activity>
        <!-- Don't delete the meta-data below.
             This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
        <meta-data
            android:name="flutterEmbedding"
            android:value="2" />

    </application>

</manifest>
 

Основная активность.тыс. т

 package com.someapp.app

import io.flutter.embedding.android.FlutterActivity

class MainActivity: FlutterActivity() {
}
 

Трепещущий Доктор:

 ❯ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 2.2.3, on Mac OS X 10.15.7 19H1217 darwin-x64, locale en-ZA)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
[✓] Xcode - develop for iOS and macOS
[✓] Chrome - develop for the web
[✓] Android Studio (version 4.1)
[✓] IntelliJ IDEA Community Edition (version 2020.2.3)
[✓] VS Code (version 1.58.2)
[✓] Connected device (3 available)

• No issues found!
 

Комментарии:

1. Похоже, что приложение на самом деле не просто «перезапускается», а выходит из строя, а затем перезапускается. Неужели вы ничего не можете почерпнуть из журналов?

2. нет, в журналах нет никаких сбоев. Что странно, так это то, что это происходит только на Android, а не на iOS. Так что теоретически, разве это не повредило бы обеим экосистемам