text:
[Android] Virtual display - Buggy resize with Android 12+

Description
A Unity widget shown in a Virtual Dispay platform view, will not properly resize on Flutter versions > 3.16.x.
This resize can be triggered by things like changing the parent size, opening the keyboard or the screen rotating to landscape.

The beta channel introduces a commit that breaks the widget on resize.
The master channel introduces a commit that fixes the error breaking the widget, but results in a wrong widget size.

1 - Current (Flutter 3.3-> 3.16)
(see video 1 and 4)
On a keyboard or screen rotation, the widget resizes to the correct size, with some visual flashes caused by Unity.
On Android 12+, in some cases (5%?) the widget will become invisible after a resize, with the log spamming: dequeueBuffer: BufferQueue has no connected producer.

2 - Beta (e.g 3.19.0-0.4.pre)
(see video 2 and 5)
This PR https://github.com/flutter/engine/pull/47946 introduces a resize function for android 12+.
This commit causes the Unity widget to freeze on resize, and spam the console with:
I/ImageReaderSurfaceProducer(20245): Skipped frame because resize is in flight.
I/ImageReaderSurfaceProducer(20245): Skipped frame because resize is in flight.
I/ImageReaderSurfaceProducer(20245): Skipped frame because resize is in flight.

The widget does not recover from this freeze until you remove it from the tree and recreate it.
Either Unity or the Unity plugins cannot hande this resize. Maybe handling this in the plugin would be an easy solution, but how?

3 - Master (e.g 3.20.0-0.0.pre)
(see video 3, 6,7 and 8)
The commit including this PR https://github.com/flutter/engine/pull/50155, changes the results from beta.
The 'resize in flight' error is gone and the widget no longer freezes.
However the widget becomes the wrong size after a resize.  (see the landscape video to see it only become 50% height)
This change does not do anything on Android <12, which makes me think this is still caused by https://github.com/flutter/engine/pull/47946 and only the bug symptoms have changed because of other changes.
Code sample
I've got 2 reproduction projects that are nearly identical, only changing the Unity plugin.

uses flutter_embed_unity (used for the logs and videos below)
https://github.com/timbotimbo/flutter_fuw_reproduction_android/tree/flutter_embed_unity_textfield
uses  flutter_unity_widget
https://github.com/timbotimbo/flutter_fuw_reproduction_android/tree/main_textfield

The first plugin is a newer and cleaner implementation, the second is more popular with more users.
The plugin choice doesn't matter for reproduction but might be useful if you wan't to check or compare something.
Steps to reproduce
I recommend to reproduce this on a real Android device.
Unity doesn't officially support (x86/x64) emulators and you might get unexpected results.
My emulator success depends on CPU type:

On Apple Silicon, the ARM64 emulator works as expected.
Only the bug mentioned for 3.16 occurs much more often. (timeout or race condition?)
On an Intel CPU, the x64 emulator shows Unity as expected, but sometimes crashes randomly.
On an AMD Ryzen CPU, the x64 emulator only shows a purple screen.
You can still see the symptoms of the issue as the purple screen resizes to the wrong size on master. (see the last video)

Steps:

Download or clone the branch linked under code sample
Run the flutter application on Android.
Click the 'Toggle' button to make Unity show up.
Click the textfield or rotate your device to trigger a resize.
On Android < 12, this is the same on Flutter 3.16, 3.19 beta and master (3.20).
On Android >=12 the issues show up on beta 3.19 and master.

Expected result
The platform view should resize just like on flutter <= 3.16 when on Android >= 12.
The platform view should resisze just like on Android < 12, which isn't broken.
I'm not sure if this should be fixed in Flutter or if there  are event or functions that can allow the Unity plugins to handle the new resize31 function.
Actual result
On 3.19 beta versions the platform view freezes with an error in the console.
On master the platform view resizes to the wrong size.
Video
The red color is a container behind the unitywidget, to show when it is transparent or invisible.
All 3 variantions on Android 13, Samsung Galaxy S20FE.
S20FE Keyboard open videos

1:  3.162:   3.193:   master (3.20)

https://github.com/flutter/flutter/assets/11444698/05c30381-bfb0-49af-8122-d41d90de7746

https://github.com/flutter/flutter/assets/11444698/0abf4cbb-ca08-4a3c-9334-4c99dc035763

https://github.com/flutter/flutter/assets/11444698/92652386-80ad-4db6-89b1-d22f49cb25e3

(expandable) S20FE screen rotation videos

4: 3.165: 3.196: master (3.20)

https://github.com/flutter/flutter/assets/11444698/5fa5b83b-5ce3-4aa2-ae9d-8516b76ae70f

https://github.com/flutter/flutter/assets/11444698/7e88f1fa-6744-4672-8bb9-bfb4fbd42229

https://github.com/flutter/flutter/assets/11444698/c9977f33-eaf8-4f34-8129-210a0ae40e8b

(expandable) Master channel on x64 Pixel emulators

7:  Intel8:  AMD

https://github.com/flutter/flutter/assets/11444698/8d3468d4-b45f-4b20-93ea-2bb8eedc591a

https://github.com/flutter/flutter/assets/11444698/c7e8e39b-69d1-4066-8165-316e104beb58

Devices
I can receate this on a real device and various emulators:

Samsung Galaxy S20FE, Android 13
Pixel 4a emulator ARM64, API33
Pixel XL emulator ARM64, API34
Pixel 4 emulator x64,  API33

Devices and emulators < android 12 (API31) can not reproduce this.
Logs
These logs are the debug console when I do the following:

Touch the textfield while Unity is running
Hit back button once keyboard is open
Terminate debug session

Logs added as text files because of character limits.
Flutter 3.16.9  (normal)
3.16.txt
Flutter 3.19.0-0.4-pre-beta  (resize in flight)
3.19.txt
Flutter master (wrong size)
master.txt
Flutter Doctor output

 flutter doctor on windows & master

[√] Flutter (Channel master, 3.20.0-2.0.pre.9, on Microsoft Windows [Version 10.0.19045.3930], locale en-NL)
    • Flutter version 3.20.0-2.0.pre.9 on channel master at C:\src\flutter-master
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 809a27ea67 (4 hours ago), 2024-02-05 11:29:22 -0600
    • Engine revision f34c658b96
    • Dart version 3.4.0 (build 3.4.0-99.0.dev)
    • DevTools version 2.31.0

[√] Windows Version (Installed version of Windows is version 10 or higher)

[√] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
    • Android SDK at C:\Users\XXXXXX\AppData\Local\Android\sdk
    • Platform android-33, build-tools 33.0.0
    • Java binary at: C:\Program Files\Android\Android Studio2\jbr\bin\java
    • Java version OpenJDK RunXXXXXXe Environment (build 17.0.6+0-b2043.56-10027231)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[√] Visual Studio - develop Windows apps (Visual Studio Community 2019 16.11.21)
    • Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
    • Visual Studio Community 2019 version 16.11.33027.164
    • Windows 10 SDK version 10.0.18362.0

[!] Android Studio (version 2022.2)
    • Android Studio at C:\Program Files\Android\Android Studio1
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    X Unable to determine bundled Java version.
    • Try updating or re-installing Android Studio.

[√] Android Studio (version 2022.3)
    • Android Studio at C:\Program Files\Android\Android Studio2
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK RunXXXXXXe Environment (build 17.0.6+0-b2043.56-10027231)

[√] VS Code (version 1.86.0)
    • VS Code at C:\Users\XXXXXX\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.82.0

[√] Connected device (5 available)
    • SM G780G (mobile)            • RF8R8021WSR   • android-arm64  • Android 13 (API 33)
    • sdk gphone64 x86 64 (mobile) • emulator-5554 • android-x64    • Android 13 (API 33) (emulator)
    • Windows (desktop)            • windows       • windows-x64    • Microsoft Windows [Version 10.0.19045.3930]
    • Chrome (web)                 • chrome        • web-javascript • Google Chrome 121.0.6167.140
    • Edge (web)                   • edge          • web-javascript • Microsoft Edge 121.0.2277.98

[√] Network resources
    • All expected network resources are available.

! Doctor found issues in 1 category.

Other
Because both mentioned pull requests were either authored or reviewd by you, I'm tagging @johnmccutchan.
Let me know if this is unwanted and too direct.

Thanks for the detailed bug report.
Re beta, I will cherry pick in my fix from master and possibly a revert of the resize31 PR (depending on my pending analysis).

 stable, master flutter doctor -v
[!] Flutter (Channel stable, 3.16.9, on macOS 12.2.1 21D62 darwin-x64, locale
    en-GB)
    • Flutter version 3.16.9 on channel stable at
      /Users/dhs/documents/fluttersdk/flutter
    ! Warning: `flutter` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/flutter, which is not inside
      your current Flutter SDK checkout at
      /Users/dhs/documents/fluttersdk/flutter. Consider adding
      /Users/dhs/documents/fluttersdk/flutter/bin to the front of your path.
    ! Warning: `dart` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/dart, which is not inside your
      current Flutter SDK checkout at /Users/dhs/documents/fluttersdk/flutter.
      Consider adding /Users/dhs/documents/fluttersdk/flutter/bin to the front
      of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 41456452f2 (12 days ago), 2024-01-25 10:06:23 -0800
    • Engine revision f40e976bed
    • Dart version 3.2.6
    • DevTools version 2.28.5
    • If those were intentional, you can disregard the above warnings; however
      it is recommended to use "git" directly to perform update checks and
      upgrades.

[!] Xcode - develop for iOS and macOS (Xcode 12.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    ! Flutter recommends a minimum Xcode version of 13.
      Download the latest version or update via the Mac App Store.
    • CocoaPods version 1.11.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] VS Code (version 1.62.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.21.0

[✓] Connected device (5 available)
    • SM G975F (mobile)       • RZ8M802WY0X • android-arm64   • Android 11 (API 30)
    • Darshan's iphone (mobile)  • 21150b119064aecc249dfcfe05e259197461ce23 •
      ios            • iOS 14.4.1 18D61
    • iPhone 12 Pro Max (mobile) • A5473606-0213-4FD8-BA16-553433949729     •
      ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator)
    • macOS (desktop)            • macos                                    •
      darwin-x64     • Mac OS X 10.15.4 19E2269 darwin-x64
    • Chrome (web)               • chrome                                   •
      web-javascript • Google Chrome 98.0.4758.80

[✓] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 1 category.

[!] Flutter (Channel master, 3.20.0-2.0.pre.18, on macOS 12.2.1 21D62
    darwin-x64, locale en-GB)
    • Flutter version 3.20.0-2.0.pre.18 on channel master at
      /Users/dhs/documents/fluttersdk/flutter
    ! Warning: `flutter` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/flutter, which is not inside
      your current Flutter SDK checkout at
      /Users/dhs/documents/fluttersdk/flutter. Consider adding
      /Users/dhs/documents/fluttersdk/flutter/bin to the front of your path.
    ! Warning: `dart` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/dart, which is not inside your
      current Flutter SDK checkout at /Users/dhs/documents/fluttersdk/flutter.
      Consider adding /Users/dhs/documents/fluttersdk/flutter/bin to the front
      of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 0903bf7055 (2 hours ago), 2024-02-05 21:42:40 -0800
    • Engine revision 808886312e
    • Dart version 3.4.0 (build 3.4.0-104.0.dev)
    • DevTools version 2.32.0
    • If those were intentional, you can disregard the above warnings; however
      it is recommended to use "git" directly to perform update checks and
      upgrades.

[!] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Users/dhs/Library/Android/sdk
    ✗ cmdline-tools component is missing
      Run `path/to/sdkmanager --install "cmdline-tools;latest"`
      See https://developer.android.com/studio/command-line for more details.
    ✗ Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/macos#android-setup for
      more details.

[✓] Xcode - develop for iOS and macOS (Xcode 13.2.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 13C100
    • CocoaPods version 1.11.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] IntelliJ IDEA Ultimate Edition (version 2021.3.2)
    • IntelliJ at /Applications/IntelliJ IDEA.app
    • Flutter plugin version 65.1.4
    • Dart plugin version 213.7228

[✓] VS Code (version 1.62.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.29.0

[✓] Connected device (3 available)
    • Darshan's iphone (mobile) • 21150b119064aecc249dfcfe05e259197461ce23 • ios
      • iOS 15.3.1 19D52
    • macOS (desktop)           • macos                                    •
      darwin-x64     • macOS 12.2.1 21D62 darwin-x64
    • Chrome (web)              • chrome                                   •
      web-javascript • Google Chrome 109.0.5414.119

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 1 category.

[!] Xcode - develop for iOS and macOS (Xcode 12.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    ! Flutter recommends a minimum Xcode version of 13.
      Download the latest version or update via the Mac App Store.
    • CocoaPods version 1.11.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] VS Code (version 1.62.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.21.0

[✓] Connected device (5 available)
    • SM G975F (mobile)       • RZ8M802WY0X • android-arm64   • Android 11 (API 30)
    • Darshan's iphone (mobile)  • 21150b119064aecc249dfcfe05e259197461ce23 •
      ios            • iOS 14.4.1 18D61
    • iPhone 12 Pro Max (mobile) • A5473606-0213-4FD8-BA16-553433949729     •
      ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator)
    • macOS (desktop)            • macos                                    •
      darwin-x64     • Mac OS X 10.15.4 19E2269 darwin-x64
    • Chrome (web)               • chrome                                   •
      web-javascript • Google Chrome 98.0.4758.80

[✓] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 1 category.

 beta flutter doctor

[!] Flutter (Channel beta, 3.19.0-0.3.pre, on macOS 12.2.1 21D62 darwin-x64,
    locale en-GB)
    • Flutter version 3.19.0-0.3.pre on channel beta at
      /Users/dhs/documents/fluttersdk/flutter
    ! Warning: `flutter` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/flutter, which is not inside
      your current Flutter SDK checkout at
      /Users/dhs/documents/fluttersdk/flutter. Consider adding
      /Users/dhs/documents/fluttersdk/flutter/bin to the front of your path.
    ! Warning: `dart` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/dart, which is not inside your
      current Flutter SDK checkout at /Users/dhs/documents/fluttersdk/flutter.
      Consider adding /Users/dhs/documents/fluttersdk/flutter/bin to the front
      of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 1b197762c5 (5 days ago), 2024-01-25 22:23:26 -0800
    • Engine revision 968e2945c7
    • Dart version 3.3.0 (build 3.3.0-279.2.beta)
    • DevTools version 2.31.0
    • If those were intentional, you can disregard the above warnings; however
      it is recommended to use "git" directly to perform update checks and
      upgrades.

[✓] Xcode - develop for iOS and macOS (Xcode 13.2.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 13C100
    • CocoaPods version 1.11.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] IntelliJ IDEA Ultimate Edition (version 2021.3.2)
    • IntelliJ at /Applications/IntelliJ IDEA.app
    • Flutter plugin version 65.1.4
    • Dart plugin version 213.7228

[✓] VS Code (version 1.62.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.29.0

[✓] Connected device (3 available)
    • iPhone 13 (mobile) • 3BD8F2FF-FDB5-4074-8C91-54F99C79156D • ios            •
      com.apple.CoreSimulator.SimRuntime.iOS-15-2 (simulator)
    • macOS (desktop)    • macos                                • darwin-x64     •
      macOS 12.2.1 21D62 darwin-x64
    • Chrome (web)       • chrome                               • web-javascript •
      Google Chrome 105.0.5195.125

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!

@timbotimbo The reproduction you provided doesn't work:
/Users/johnmccutchan/t/flutter_fuw_reproduction_android/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java:19: error: package com.learntoflutter.flutter_embed_unity_android does not exist
      flutterEngine.getPlugins().add(new com.learntoflutter.flutter_embed_unity_android.FlutterEmbedUnityAndroidPlugin());
                                                                                ^
1 error

FAILURE: Build failed with an exception.

Also, in the resize case I see logs of:
I/CustomUnityPlayer( 6694): onAttachedToWindow

which is not printed in the resize31 case (this is expected as we no longer remove the platform view from its window / add it to the new resized window).

Current status:
We will cherry pick https://github.com/flutter/engine/pull/50155 into the next stable release but given the information we have it seems like the unity plugin needs to be fixed to properly handle the orientation / resize signals.

Thanks for looking into this.
So if I understand correctly, the beta behavior was an actual Flutter bug, and the newer behavior is a Unity issue.

The documentation for using Unity as a library mention this:

Unity as a Library only supports full-screen rendering, and doesn’t support rendering on part of the screen.

So it wouldn't surprise me if they don't  actively try to support resizes like this.
The ORIENTATION CHANGED message is actually a log from that specific plugin, so that gives me something to start from.
I will try and see if I can replicate the old behavior by listening for the resize and forcing unity to detach/reattach.
(Maybe on something like onConfigurationChanged)

Regarding the first repro project.
I just tried cloning it and it ran on flutter master.
I did have issues with the GeneratedPluginRegistrant.java file when constantly switching flutter versions before.
It gets generated on a build but not removed on a clean. Maybe the generated file isn't always compatible with other Flutter versions.

Yes,
The beta behaviour of freezing is a bug that was fixed in master. The newer behaviour seems like a bug in Unity not observing the resize correctly. Let me know how your investigation goes.
John

I just tested the new 3.19 stable release, which adds a 4th variation.
On keyboard or rotation, the widget instantly freezes while spamming:
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned

The new 3.20.0-1.1.pre has the same behaviour as master mentioned above, which I'm still looking into.
Log

Console on opening the keyboard on 3.19 stable
E/ImageTextureRegistryEntry(17453): Dropping PlatformView Frame
I/ViewRootImpl@9b92ada[MainActivity](17453): ViewPostIme pointer 0
E/ImageTextureRegistryEntry(17453): Dropping PlatformView Frame
I/ViewRootImpl@9b92ada[MainActivity](17453): ViewPostIme pointer 1
D/InputMethodManager(17453): startInputInner - Id : 0
I/InputMethodManager(17453): startInputInner - mService.startInputOrWindowGainedFocus
I/IMM_LC  (17453): showSoftInput(View,I)
I/IMM_LC  (17453): ssi() - flag : 0 view : com.example.example reason = SHOW_SOFT_INPUT
I/IMM_LC  (17453): ssi() view is not EditText
E/ImageTextureRegistryEntry(17453): Dropping PlatformView Frame
I/AssistStructure(17453): Flattened final assist data: 452 bytes, containing 1 windows, 3 views
E/ImageTextureRegistryEntry(17453): Dropping PlatformView Frame
D/InputConnectionAdaptor(17453): The input method toggled cursor monitoring on
W/OnBackInvokedCallback(17453): OnBackInvokedCallback is not enabled for the application.
W/OnBackInvokedCallback(17453): Set 'android:enableOnBackInvokedCallback="true"' in the application manifest.
E/ImageTextureRegistryEntry(17453): Dropping PlatformView Frame
E/ImageTextureRegistryEntry(17453): Dropping PlatformView Frame
I/ViewRootImpl@9b92ada[MainActivity](17453): Resizing android.view.ViewRootImpl@3f11ce7: frame = [0,0][1080,2400] reportDraw = false forceLayout = false syncSeqId = 0
D/InsetsController(17453): onStateChanged: InsetsState: {mDisplayFrame=Rect(0, 0 - 1080, 2400), mDisplayCutout=DisplayCutout{insets=Rect(0, 88 - 0, 0) waterfall=Insets{left=0, top=0, right=0, bottom=0} boundingRect={Bounds=[Rect(0, 0 - 0, 0), Rect(512, 0 - 568, 88), Rect(0, 0 - 0, 0), Rect(0, 0 - 0, 0)]} cutoutPathParserInfo={CutoutPathParserInfo{displayWidth=1080 displayHeight=2400 physicalDisplayWidth=1080 physicalDisplayHeight=2400 density={3.0} cutoutSpec={M 0,0 M 0,10.71963616907435 a 9.280363830925644,9.280363830925644 0 1,0 0,18.56072766185129 a 9.280363830925644,9.280363830925644 0 1,0 0,-18.56072766185129 Z @dp} rotation={0} scale={1.0} physicalPixelDisplaySizeRatio={1.0}}}}, mRoundedCorners=RoundedCorners{[RoundedCorner{position=TopLeft, radius=96, center=Point(96, 96)}, RoundedCorner{position=TopRight, radius=96, center=Point(984, 96)}, RoundedCorner{position=BottomRight, radius=96, center=Point(984, 2304)}, RoundedCorner{position=BottomLeft, radius=96, center=Point(96, 2304)}]}  mRoundedCornerFrame=Rect(0, 0 - 1080, 2400), mPrivacyIndicatorBounds=PrivacyIndicatorBounds {static bounds=Rect(948, 0 - 1080, 88) rotation=0}, mSources= { InsetsSource: {mType=ITYPE_STATUS_BAR, mFrame=[0,0][1080,88], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_NAVIGATION_BAR, mFrame=[0,2256][1080,2400], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_LEFT_GESTURES, mFrame=[0,0][0,2400], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_RIGHT_GESTURES, mFrame=[1080,0][1080,2400], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_TOP_MANDATORY_GESTURES, mFrame=[0,0][1080,124], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_BOTTOM_MANDATORY_GESTURES, mFrame=[0,2256][1080,2400], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_LEFT_DISPLAY_CUTOUT, mFrame=[0,0][-100000,2400], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_TOP_DISPLAY_CUTOUT, mFrame=[0,0][1080,88], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_RIGHT_DISPLAY_CUTOUT, mFrame=[100000,0][1080,2400], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_BOTTOM_DISPLAY_CUTOUT, mFrame=[0,100000][1080,2400], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_TOP_TAPPABLE_ELEMENT, mFrame=[0,0][1080,88], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_BOTTOM_TAPPABLE_ELEMENT, mFrame=[0,2256][1080,2400], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_IME, mFrame=[144,1080][2312,1080], mVisible=false, mInsetsRoundedCornerFrame=false} } host=com.example.example/com.example.example.MainActivity from=android.view.ViewRootImpl$ViewRootHandler.handleMessageImpl:6740
I/ViewRootImpl@9b92ada[MainActivity](17453): handleResized, msg = 4 frames=ClientWindowFrames{frame=[0,0][1080,2400] display=[0,0][1080,2400] parentFrame=[0,0][0,0] parentClippedByDisplayCutout=false} forceNextWindowRelayout=false displayId=0 resizeMode=-1 frameChanged=false displayFrameChanged=false configChanged=false displayChanged=false
E/ImageTextureRegistryEntry(17453): Dropping PlatformView Frame
D/InsetsController(17453): onStateChanged: InsetsState: {mDisplayFrame=Rect(0, 0 - 1080, 2400), mDisplayCutout=DisplayCutout{insets=Rect(0, 88 - 0, 0) waterfall=Insets{left=0, top=0, right=0, bottom=0} boundingRect={Bounds=[Rect(0, 0 - 0, 0), Rect(512, 0 - 568, 88), Rect(0, 0 - 0, 0), Rect(0, 0 - 0, 0)]} cutoutPathParserInfo={CutoutPathParserInfo{displayWidth=1080 displayHeight=2400 physicalDisplayWidth=1080 physicalDisplayHeight=2400 density={3.0} cutoutSpec={M 0,0 M 0,10.71963616907435 a 9.280363830925644,9.280363830925644 0 1,0 0,18.56072766185129 a 9.280363830925644,9.280363830925644 0 1,0 0,-18.56072766185129 Z @dp} rotation={0} scale={1.0} physicalPixelDisplaySizeRatio={1.0}}}}, mRoundedCorners=RoundedCorners{[RoundedCorner{position=TopLeft, radius=96, center=Point(96, 96)}, RoundedCorner{position=TopRight, radius=96, center=Point(984, 96)}, RoundedCorner{position=BottomRight, radius=96, center=Point(984, 2304)}, RoundedCorner{position=BottomLeft, radius=96, center=Point(96, 2304)}]}  mRoundedCornerFrame=Rect(0, 0 - 1080, 2400), mPrivacyIndicatorBounds=PrivacyIndicatorBounds {static bounds=Rect(948, 0 - 1080, 88) rotation=0}, mSources= { InsetsSource: {mType=ITYPE_STATUS_BAR, mFrame=[0,0][1080,88], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_NAVIGATION_BAR, mFrame=[0,2256][1080,2400], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_LEFT_GESTURES, mFrame=[0,0][0,2400], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_RIGHT_GESTURES, mFrame=[1080,0][1080,2400], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_TOP_MANDATORY_GESTURES, mFrame=[0,0][1080,124], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_BOTTOM_MANDATORY_GESTURES, mFrame=[0,2256][1080,2400], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_LEFT_DISPLAY_CUTOUT, mFrame=[0,0][-100000,2400], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_TOP_DISPLAY_CUTOUT, mFrame=[0,0][1080,88], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_RIGHT_DISPLAY_CUTOUT, mFrame=[100000,0][1080,2400], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_BOTTOM_DISPLAY_CUTOUT, mFrame=[0,100000][1080,2400], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_TOP_TAPPABLE_ELEMENT, mFrame=[0,0][1080,88], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_BOTTOM_TAPPABLE_ELEMENT, mFrame=[0,2256][1080,2400], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_IME, mFrame=[0,1591][1080,2400], mVisibleFrame=[0,1591][1080,2400], mVisible=false, mInsetsRoundedCornerFrame=false} } host=com.example.example/com.example.example.MainActivity from=android.view.ViewRootImpl$ViewRootHandler.handleMessageImpl:6740
I/ViewRootImpl@9b92ada[MainActivity](17453): Resizing android.view.ViewRootImpl@3f11ce7: frame = [0,0][1080,2400] reportDraw = false forceLayout = false syncSeqId = 0
I/ViewRootImpl@9b92ada[MainActivity](17453): handleResized, msg = 4 frames=ClientWindowFrames{frame=[0,0][1080,2400] display=[0,0][1080,2400] parentFrame=[0,0][0,0] parentClippedByDisplayCutout=false} forceNextWindowRelayout=false displayId=0 resizeMode=-1 frameChanged=false displayFrameChanged=false configChanged=false displayChanged=false
E/ImageTextureRegistryEntry(17453): Dropping PlatformView Frame
D/InsetsController(17453): show(ime(), fromIme=true)
D/InsetsController(17453): controlAnimationUnchecked: Added types=8 animType=0 host=com.example.example/com.example.example.MainActivity from=android.view.InsetsController.applyAnimation:1576 android.view.InsetsController.applyAnimation:1557 android.view.InsetsController.show:1063
D/InsetsSourceConsumer(17453): setRequestedVisible: visible=true, type=19, host=com.example.example/com.example.example.MainActivity, from=android.view.InsetsSourceConsumer.show:250 android.view.ImeInsetsSourceConsumer.show:82 android.view.InsetsController.showDirectly:1609 android.view.InsetsController.controlAnimationUnchecked:1232 android.view.InsetsController.applyAnimation:1576 android.view.InsetsController.applyAnimation:1557 android.view.InsetsController.show:1063 android.view.ViewRootImpl$ViewRootHandler.handleMessageImpl:6761 android.view.ViewRootImpl$ViewRootHandler.handleMessage:6697 android.os.Handler.dispatchMessage:106
I/ViewRootImpl@9b92ada[MainActivity](17453): Resizing android.view.ViewRootImpl@3f11ce7: frame = [0,0][1080,2400] reportDraw = false forceLayout = false syncSeqId = 0
I/ViewRootImpl@9b92ada[MainActivity](17453): mWNT: t=0xb400007712ebcd00 mBlastBufferQueue=0xb4000077842fa280 fn= 42 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0$android-view-SyncRtSurfaceTransactionApplier:69 android.view.SyncRtSurfaceTransactionApplier$$ExternalSyntheticLambda0.onFrameDraw:4
D/InsetsController(17453): onStateChanged: InsetsState: {mDisplayFrame=Rect(0, 0 - 1080, 2400), mDisplayCutout=DisplayCutout{insets=Rect(0, 88 - 0, 0) waterfall=Insets{left=0, top=0, right=0, bottom=0} boundingRect={Bounds=[Rect(0, 0 - 0, 0), Rect(512, 0 - 568, 88), Rect(0, 0 - 0, 0), Rect(0, 0 - 0, 0)]} cutoutPathParserInfo={CutoutPathParserInfo{displayWidth=1080 displayHeight=2400 physicalDisplayWidth=1080 physicalDisplayHeight=2400 density={3.0} cutoutSpec={M 0,0 M 0,10.71963616907435 a 9.280363830925644,9.280363830925644 0 1,0 0,18.56072766185129 a 9.280363830925644,9.280363830925644 0 1,0 0,-18.56072766185129 Z @dp} rotation={0} scale={1.0} physicalPixelDisplaySizeRatio={1.0}}}}, mRoundedCorners=RoundedCorners{[RoundedCorner{position=TopLeft, radius=96, center=Point(96, 96)}, RoundedCorner{position=TopRight, radius=96, center=Point(984, 96)}, RoundedCorner{position=BottomRight, radius=96, center=Point(984, 2304)}, RoundedCorner{position=BottomLeft, radius=96, center=Point(96, 2304)}]}  mRoundedCornerFrame=Rect(0, 0 - 1080, 2400), mPrivacyIndicatorBounds=PrivacyIndicatorBounds {static bounds=Rect(948, 0 - 1080, 88) rotation=0}, mSources= { InsetsSource: {mType=ITYPE_STATUS_BAR, mFrame=[0,0][1080,88], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_NAVIGATION_BAR, mFrame=[0,2256][1080,2400], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_LEFT_GESTURES, mFrame=[0,0][0,2400], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_RIGHT_GESTURES, mFrame=[1080,0][1080,2400], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_TOP_MANDATORY_GESTURES, mFrame=[0,0][1080,124], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_BOTTOM_MANDATORY_GESTURES, mFrame=[0,2256][1080,2400], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_LEFT_DISPLAY_CUTOUT, mFrame=[0,0][-100000,2400], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_TOP_DISPLAY_CUTOUT, mFrame=[0,0][1080,88], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_RIGHT_DISPLAY_CUTOUT, mFrame=[100000,0][1080,2400], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_BOTTOM_DISPLAY_CUTOUT, mFrame=[0,100000][1080,2400], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_TOP_TAPPABLE_ELEMENT, mFrame=[0,0][1080,88], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_BOTTOM_TAPPABLE_ELEMENT, mFrame=[0,2256][1080,2400], mVisible=true, mInsetsRoundedCornerFrame=false}, InsetsSource: {mType=ITYPE_IME, mFrame=[0,1591][1080,2400], mVisibleFrame=[0,1591][1080,2400], mVisible=true, mInsetsRoundedCornerFrame=false} } host=com.example.example/com.example.example.MainActivity from=android.view.ViewRootImpl$ViewRootHandler.handleMessageImpl:6740
I/ViewRootImpl@9b92ada[MainActivity](17453): handleResized, msg = 4 frames=ClientWindowFrames{frame=[0,0][1080,2400] display=[0,0][1080,2400] parentFrame=[0,0][0,0] parentClippedByDisplayCutout=false} forceNextWindowRelayout=false displayId=0 resizeMode=-1 frameChanged=false displayFrameChanged=false configChanged=false displayChanged=false
I/ViewRootImpl@9b92ada[MainActivity](17453): mWNT: t=0xb400007712ebcf00 mBlastBufferQueue=0xb4000077842fa280 fn= 43 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0$android-view-SyncRtSurfaceTransactionApplier:69 android.view.SyncRtSurfaceTransactionApplier$$ExternalSyntheticLambda0.onFrameDraw:4
E/ImageTextureRegistryEntry(17453): Dropping PlatformView Frame
I/ViewRootImpl@9b92ada[MainActivity](17453): mWNT: t=0xb400007712f71c00 mBlastBufferQueue=0xb4000077842fa280 fn= 44 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0$android-view-SyncRtSurfaceTransactionApplier:69 android.view.SyncRtSurfaceTransactionApplier$$ExternalSyntheticLambda0.onFrameDraw:4
I/ViewRootImpl@9b92ada[MainActivity](17453): mWNT: t=0xb400007712fd9800 mBlastBufferQueue=0xb4000077842fa280 fn= 45 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0$android-view-SyncRtSurfaceTransactionApplier:69 android.view.SyncRtSurfaceTransactionApplier$$ExternalSyntheticLambda0.onFrameDraw:4
I/ViewRootImpl@9b92ada[MainActivity](17453): mWNT: t=0xb400007713095800 mBlastBufferQueue=0xb4000077842fa280 fn= 46 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0$android-view-SyncRtSurfaceTransactionApplier:69 android.view.SyncRtSurfaceTransactionApplier$$ExternalSyntheticLambda0.onFrameDraw:4
I/ViewRootImpl@9b92ada[MainActivity](17453): mWNT: t=0xb400007712ddf700 mBlastBufferQueue=0xb4000077842fa280 fn= 47 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0$android-view-SyncRtSurfaceTransactionApplier:69 android.view.SyncRtSurfaceTransactionApplier$$ExternalSyntheticLambda0.onFrameDraw:4
E/ImageTextureRegistryEntry(17453): Dropping PlatformView Frame
I/ViewRootImpl@9b92ada[MainActivity](17453): mWNT: t=0xb400007713095b00 mBlastBufferQueue=0xb4000077842fa280 fn= 48 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0$android-view-SyncRtSurfaceTransactionApplier:69 android.view.SyncRtSurfaceTransactionApplier$$ExternalSyntheticLambda0.onFrameDraw:4
E/ImageTextureRegistryEntry(17453): Dropping PlatformView Frame
E/ImageTextureRegistryEntry(17453): Dropping PlatformView Frame
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
I/ViewRootImpl@9b92ada[MainActivity](17453): mWNT: t=0xb400007712f9d200 mBlastBufferQueue=0xb4000077842fa280 fn= 49 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0$android-view-SyncRtSurfaceTransactionApplier:69 android.view.SyncRtSurfaceTransactionApplier$$ExternalSyntheticLambda0.onFrameDraw:4
I/ViewRootImpl@9b92ada[MainActivity](17453): mWNT: t=0xb4000077ac13d300 mBlastBufferQueue=0xb4000077842fa280 fn= 50 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0$android-view-SyncRtSurfaceTransactionApplier:69 android.view.SyncRtSurfaceTransactionApplier$$ExternalSyntheticLambda0.onFrameDraw:4
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
I/ViewRootImpl@9b92ada[MainActivity](17453): mWNT: t=0xb40000772036bc00 mBlastBufferQueue=0xb4000077842fa280 fn= 51 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0$android-view-SyncRtSurfaceTransactionApplier:69 android.view.SyncRtSurfaceTransactionApplier$$ExternalSyntheticLambda0.onFrameDraw:4
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
I/ViewRootImpl@9b92ada[MainActivity](17453): mWNT: t=0xb40000770b82a500 mBlastBufferQueue=0xb4000077842fa280 fn= 52 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0$android-view-SyncRtSurfaceTransactionApplier:69 android.view.SyncRtSurfaceTransactionApplier$$ExternalSyntheticLambda0.onFrameDraw:4
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
I/ViewRootImpl@4506bac[](17453): Resizing android.view.ViewRootImpl@32e9698: frame = [0,0][1080,1955] reportDraw = false forceLayout = false syncSeqId = 0
I/ViewRootImpl@9b92ada[MainActivity](17453): mWNT: t=0xb400007712ddfc00 mBlastBufferQueue=0xb4000077842fa280 fn= 53 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0$android-view-SyncRtSurfaceTransactionApplier:69 android.view.SyncRtSurfaceTransactionApplier$$ExternalSyntheticLambda0.onFrameDraw:4
D/InsetsController(17453): onStateChanged: InsetsState: {mDisplayFrame=Rect(0, 0 - 1080, 1955), mDisplayCutout=DisplayCutout{insets=Rect(0, 0 - 0, 0) waterfall=Insets{left=0, top=0, right=0, bottom=0} boundingRect={Bounds=[Rect(0, 0 - 0, 0), Rect(0, 0 - 0, 0), Rect(0, 0 - 0, 0), Rect(0, 0 - 0, 0)]} cutoutPathParserInfo={CutoutPathParserInfo{displayWidth=0 displayHeight=0 physicalDisplayWidth=0 physicalDisplayHeight=0 density={0.0} cutoutSpec={} rotation={0} scale={0.0} physicalPixelDisplaySizeRatio={0.0}}}}, mRoundedCorners=RoundedCorners{[RoundedCorner{position=TopLeft, radius=0, center=Point(0, 0)}, RoundedCorner{position=TopRight, radius=0, center=Point(0, 0)}, RoundedCorner{position=BottomRight, radius=0, center=Point(0, 0)}, RoundedCorner{position=BottomLeft, radius=0, center=Point(0, 0)}]}  mRoundedCornerFrame=Rect(0, 0 - 0, 0), mPrivacyIndicatorBounds=PrivacyIndicatorBounds {static bounds=null rotation=0}, mSources= {  } host= from=android.view.ViewRootImpl$ViewRootHandler.handleMessageImpl:6727
I/ViewRootImpl@4506bac[](17453): handleResized, msg = 4 frames=ClientWindowFrames{frame=[0,0][1080,1955] display=[0,0][1080,1955] parentFrame=[0,0][0,0] parentClippedByDisplayCutout=false} forceNextWindowRelayout=false displayId=661 resizeMode=-1 frameChanged=true displayFrameChanged=true configChanged=true displayChanged=false
I/DecorView(17453): getCurrentDensityDpi: from app context. densityDpi=480 msg=remove_caption
I/DecorView(17453): [INFO] isPopOver=false config=true
I/DecorView(17453): updateCaptionType: isFloating=false isApplication=false hasWindowDecorCaption=false this=DecorView@eadac03[]
D/DecorView(17453): setCaptionType = 0, this = DecorView@eadac03[]
I/MSHandlerLifeCycle(17453): check: return. pkg=com.example.example isActivity=false callers=com.android.internal.policy.DecorView.onConfigurationChanged:3363 android.view.View.dispatchConfigurationChanged:16145 android.view.ViewGroup.dispatchConfigurationChanged:1646 android.view.ViewRootImpl.updateConfiguration:6502 android.view.ViewRootImpl.performConfigurationChange:6465
I/MSHandlerLifeCycle(17453): removeMultiSplitHandler: no exist. decor=DecorView@eadac03[]
I/CustomUnityPlayer(17453): ORIENTATION CHANGED
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
I/ViewRootImpl@4506bac[](17453): handleResized mSyncSeqId = 0
I/ViewRootImpl@4506bac[](17453): performTraversals mFirst=false windowShouldResize=true viewVisibilityChanged=false mForceNextWindowRelayout=false params=null
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
I/ViewRootImpl@4506bac[](17453): Resizing android.view.ViewRootImpl@32e9698: frame = [0,0][1080,1955] reportDraw = false forceLayout = false syncSeqId = 0
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
I/ViewRootImpl@4506bac[](17453): Resizing android.view.ViewRootImpl@32e9698: frame = [0,0][1080,1529] reportDraw = false forceLayout = false syncSeqId = 0
D/InsetsController(17453): onStateChanged: InsetsState: {mDisplayFrame=Rect(0, 0 - 1080, 1529), mDisplayCutout=DisplayCutout{insets=Rect(0, 0 - 0, 0) waterfall=Insets{left=0, top=0, right=0, bottom=0} boundingRect={Bounds=[Rect(0, 0 - 0, 0), Rect(0, 0 - 0, 0), Rect(0, 0 - 0, 0), Rect(0, 0 - 0, 0)]} cutoutPathParserInfo={CutoutPathParserInfo{displayWidth=0 displayHeight=0 physicalDisplayWidth=0 physicalDisplayHeight=0 density={0.0} cutoutSpec={} rotation={0} scale={0.0} physicalPixelDisplaySizeRatio={0.0}}}}, mRoundedCorners=RoundedCorners{[RoundedCorner{position=TopLeft, radius=0, center=Point(0, 0)}, RoundedCorner{position=TopRight, radius=0, center=Point(0, 0)}, RoundedCorner{position=BottomRight, radius=0, center=Point(0, 0)}, RoundedCorner{position=BottomLeft, radius=0, center=Point(0, 0)}]}  mRoundedCornerFrame=Rect(0, 0 - 0, 0), mPrivacyIndicatorBounds=PrivacyIndicatorBounds {static bounds=null rotation=0}, mSources= {  } host= from=android.view.ViewRootImpl.relayoutWindow:9802
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
I/ViewRootImpl@4506bac[](17453): updateBlastSurfaceIfNeeded mBlastBufferQueue=0xb40000778459f180 isSameSurfaceControl=true
I/BLASTBufferQueue(17453): update, w= 1080 h= 1529 mName = ViewRootImpl@4506bac[] mNativeObject= 0xb40000778459f180 sc.mNativeObject= 0xb400007712fdd840 format= -2 caller= android.view.ViewRootImpl.updateBlastSurfaceIfNeeded:2898 android.view.ViewRootImpl.relayoutWindow:9847 android.view.ViewRootImpl.performTraversals:3884 android.view.ViewRootImpl.doTraversal:3116 android.view.ViewRootImpl$TraversalRunnable.run:10885 android.view.Choreographer$CallbackRecord.run:1301
I/ViewRootImpl@4506bac[](17453): Relayout returned: old=(0,0,1080,1955) new=(0,0,1080,1529) req=(1080,1955)0 dur=91 res=0x0 s={true 0xb400007521fd1800} ch=false seqId=0
I/DecorView(17453): getCurrentDensityDpi: from app context. densityDpi=480 msg=remove_caption
I/DecorView(17453): [INFO] isPopOver=false config=true
I/DecorView(17453): updateCaptionType: isFloating=false isApplication=false hasWindowDecorCaption=false this=DecorView@eadac03[]
D/DecorView(17453): setCaptionType = 0, this = DecorView@eadac03[]
I/MSHandlerLifeCycle(17453): check: return. pkg=com.example.example isActivity=false callers=com.android.internal.policy.DecorView.onConfigurationChanged:3363 android.view.View.dispatchConfigurationChanged:16145 android.view.ViewGroup.dispatchConfigurationChanged:1646 android.view.ViewRootImpl.updateConfiguration:6502 android.view.ViewRootImpl.performConfigurationChange:6465
I/MSHandlerLifeCycle(17453): removeMultiSplitHandler: no exist. decor=DecorView@eadac03[]
I/CustomUnityPlayer(17453): ORIENTATION CHANGED
D/OpenGLRenderer(17453): setSurface() destroyed EGLSurface
D/OpenGLRenderer(17453): destroyEglSurface
I/ViewRootImpl@4506bac[](17453): mThreadedRenderer.updateSurface() mSurface={isValid=true 0xb400007521fd1800}
D/OpenGLRenderer(17453): eglCreateWindowSurface
I/ViewRootImpl@4506bac[](17453): updateBoundsLayer: t = android.view.SurfaceControl$Transaction@d0b5613 sc = Surface(name=Bounds for - @0)/@0x7bfa050 frame = 4
I/ViewRootImpl@4506bac[](17453): mWNT: t=0xb400007712ddf000 mBlastBufferQueue=0xb40000778459f180 fn= 4 caller= android.view.ViewRootImpl.prepareSurfaces:2985 android.view.ViewRootImpl.performTraversals:4233 android.view.ViewRootImpl.doTraversal:3116
I/SurfaceView@69b34db(17453): Changes: creating=false format=false size=true visible=false alpha=false hint=false mUseAlpha=false visible=false left=false top=false
I/SurfaceView@69b34db(17453): 110834907 Cur surface: Surface(name=null)/@0xdff69f2
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
I/BLASTBufferQueue(17453): update, w= 1080 h= 1529 mName = null mNativeObject= 0xb40000752d562700 sc.mNativeObject= 0xb400007712f20400 format= 4 caller= android.view.SurfaceView.setBufferSize:1304 android.view.SurfaceView.performSurfaceTransaction:918 android.view.SurfaceView.updateSurface:1105 android.view.SurfaceView.setFrame:525 android.view.View.layout:24966 android.widget.FrameLayout.layoutChildren:332
I/SurfaceView@69b34db(17453): pST: sr = Rect(0, 0 - 1080, 1529) sw = 1080 sh = 1529
D/SurfaceView@69b34db(17453): performSurfaceTransaction RenderWorker position = [0, 0, 1080, 1529] surfaceSize = 1080x1529
I/SurfaceView@69b34db(17453): applyTransactionOnVriDraw: vri = ViewRootImpl@4506bac[] fRS = false t = 0xb400007712ff2f00 android.view.SurfaceView.performSurfaceTransaction:959 android.view.SurfaceView.updateSurface:1105 android.view.SurfaceView.setFrame:525
I/ViewRootImpl@4506bac[](17453): applyTransactionOnDraw: mRemoved = false isHardwareEnabled = true t = 0xb400007712ff2f00android.view.SurfaceView.applyTransactionOnVriDraw:2048 android.view.SurfaceView.performSurfaceTransaction:959 android.view.SurfaceView.updateSurface:1105 android.view.SurfaceView.setFrame:525 android.view.View.layout:24966
I/SurfaceView@69b34db(17453): updateSurface: mVisible = true mSurface.isValid() = true
I/SurfaceView@69b34db(17453): updateSurface: mSurfaceCreated = true surfaceChanged = false visibleChanged = false
I/SurfaceView@69b34db(17453): surfaceChanged -- format=4 w=1080 h=1529
I/SurfaceView@69b34db(17453): surfaceChanged (1080,1529) 1 #5 android.view.SurfaceView{69b34db VFE...... ......ID 0,0-1080,1529 #7f05004c app:id/unitySurfaceView}
I/SurfaceView@69b34db(17453): surfaceRedrawNeeded
V/SurfaceView@69b34db(17453): Layout: x=0 y=0 w=1080 h=1529, frame=Rect(0, 0 - 1080, 1529)
D/SurfaceView@69b34db(17453): updateSurfacePosition RenderWorker, frameNr = 4, position = [0, 0, 1080, 1529] surfaceSize = 1080x1529
I/SurfaceView@69b34db(17453): uSP: rtp = Rect(0, 0 - 1080, 1529) rtsw = 1080 rtsh = 1529
I/SurfaceView@69b34db(17453): onSSPAndSRT: pl = 0 pt = 0 sx = 1.0 sy = 1.0
I/SurfaceView@69b34db(17453): aOrMT: ViewRootImpl@4506bac[] t = android.view.SurfaceControl$Transaction@24b406f fN = 4 android.view.SurfaceView.-$$Nest$mapplyOrMergeTransaction:0 android.view.SurfaceView$SurfaceViewPositionUpdateListener.positionChanged:1537 android.graphics.RenderNode$CompositePositionUpdateListener.positionChanged:373
I/ViewRootImpl@4506bac[](17453): mWNT: t=0xb400007712fa7200 mBlastBufferQueue=0xb40000778459f180 fn= 4 caller= android.view.SurfaceView.applyOrMergeTransaction:1455 android.view.SurfaceView.-$$Nest$mapplyOrMergeTransaction:0 android.view.SurfaceView$SurfaceViewPositionUpdateListener.positionChanged:1537
I/ViewRootImpl@4506bac[](17453): mWNT: t=0xb400007712ff2f00 mBlastBufferQueue=0xb40000778459f180 fn= 4 caller= android.view.ViewRootImpl.lambda$applyTransactionOnDraw$11$android-view-ViewRootImpl:12865 android.view.ViewRootImpl$$ExternalSyntheticLambda1.onFrameDraw:4 android.graphics.HardwareRenderer$FrameDrawingCallback.onFrameDraw:924
I/ViewRootImpl@9b92ada[MainActivity](17453): mWNT: t=0xb400007712ddff00 mBlastBufferQueue=0xb4000077842fa280 fn= 54 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0$android-view-SyncRtSurfaceTransactionApplier:69 android.view.SyncRtSurfaceTransactionApplier$$ExternalSyntheticLambda0.onFrameDraw:4
D/InsetsController(17453): cancelAnimation of types: 8, animType: 0, host: com.example.example/com.example.example.MainActivity, from:android.view.InsetsController.notifyFinished:1375 android.view.InsetsAnimationControlImpl.applyChangeInsets:285 android.view.InsetsController.lambda$new$3$android-view-InsetsController:674
D/InsetsSourceConsumer(17453): ensureControlPosition: Point(0, 88) for ITYPE_IME on com.example.example/com.example.example.MainActivity from android.view.InsetsSourceConsumer.notifyAnimationFinished:419
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
I/ViewRootImpl@4506bac[](17453): performTraversals mFirst=false windowShouldResize=false viewVisibilityChanged=false mForceNextWindowRelayout=true params=null
I/ViewRootImpl@4506bac[](17453): updateBlastSurfaceIfNeeded mBlastBufferQueue=0xb40000778459f180 isSameSurfaceControl=true
I/BLASTBufferQueue(17453): update, w= 1080 h= 1529 mName = ViewRootImpl@4506bac[] mNativeObject= 0xb40000778459f180 sc.mNativeObject= 0xb400007712fddc00 format= -2 caller= android.view.ViewRootImpl.updateBlastSurfaceIfNeeded:2898 android.view.ViewRootImpl.relayoutWindow:9847 android.view.ViewRootImpl.performTraversals:3884 android.view.ViewRootImpl.doTraversal:3116 android.view.ViewRootImpl$TraversalRunnable.run:10885 android.view.Choreographer$CallbackRecord.run:1301
I/ViewRootImpl@4506bac[](17453): Relayout returned: old=(0,0,1080,1529) new=(0,0,1080,1529) req=(1080,1529)0 dur=5 res=0x0 s={true 0xb400007521fd1800} ch=false seqId=0
D/OpenGLRenderer(17453): setSurface() destroyed EGLSurface
D/OpenGLRenderer(17453): destroyEglSurface
I/ViewRootImpl@4506bac[](17453): mThreadedRenderer.updateSurface() mSurface={isValid=true 0xb400007521fd1800}
D/OpenGLRenderer(17453): eglCreateWindowSurface
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
I/ViewRootImpl@9b92ada[MainActivity](17453): mWNT: t=0xb40000770b82af00 mBlastBufferQueue=0xb4000077842fa280 fn= 55 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0$android-view-SyncRtSurfaceTransactionApplier:69 android.view.SyncRtSurfaceTransactionApplier$$ExternalSyntheticLambda0.onFrameDraw:4
I/ViewRootImpl@9b92ada[MainActivity](17453): mWNT: t=0xb40000770bb69500 mBlastBufferQueue=0xb4000077842fa280 fn= 55 caller= android.view.SyncRtSurfaceTransactionApplier.applyTransaction:96 android.view.SyncRtSurfaceTransactionApplier.lambda$scheduleApply$0$android-view-SyncRtSurfaceTransactionApplier:69 android.view.SyncRtSurfaceTransactionApplier$$ExternalSyntheticLambda0.onFrameDraw:4
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
I/ViewRootImpl@4506bac[](17453): handleResized, msg = 4 frames=ClientWindowFrames{frame=[0,0][1080,1955] display=[0,0][1080,1955] parentFrame=[0,0][0,0] parentClippedByDisplayCutout=false} forceNextWindowRelayout=false displayId=661 resizeMode=-1 frameChanged=true displayFrameChanged=true configChanged=false displayChanged=false
I/ViewRootImpl@4506bac[](17453): handleResized mSyncSeqId = 0
I/ViewRootImpl@4506bac[](17453): handleResized, msg = 4 frames=ClientWindowFrames{frame=[0,0][1080,1529] display=[0,0][1080,1529] parentFrame=[0,0][0,0] parentClippedByDisplayCutout=false} forceNextWindowRelayout=false displayId=661 resizeMode=-1 frameChanged=true displayFrameChanged=true configChanged=false displayChanged=false
I/ViewRootImpl@4506bac[](17453): handleResized mSyncSeqId = 0
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
I/SurfaceView@69b34db(17453): finishedDrawing
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
I/ViewRootImpl@4506bac[](17453): Resizing android.view.ViewRootImpl@32e9698: frame = [0,0][1080,1529] reportDraw = false forceLayout = false syncSeqId = 0
D/InsetsController(17453): onStateChanged: InsetsState: {mDisplayFrame=Rect(0, 0 - 1080, 1394), mDisplayCutout=DisplayCutout{insets=Rect(0, 0 - 0, 0) waterfall=Insets{left=0, top=0, right=0, bottom=0} boundingRect={Bounds=[Rect(0, 0 - 0, 0), Rect(0, 0 - 0, 0), Rect(0, 0 - 0, 0), Rect(0, 0 - 0, 0)]} cutoutPathParserInfo={CutoutPathParserInfo{displayWidth=0 displayHeight=0 physicalDisplayWidth=0 physicalDisplayHeight=0 density={0.0} cutoutSpec={} rotation={0} scale={0.0} physicalPixelDisplaySizeRatio={0.0}}}}, mRoundedCorners=RoundedCorners{[RoundedCorner{position=TopLeft, radius=0, center=Point(0, 0)}, RoundedCorner{position=TopRight, radius=0, center=Point(0, 0)}, RoundedCorner{position=BottomRight, radius=0, center=Point(0, 0)}, RoundedCorner{position=BottomLeft, radius=0, center=Point(0, 0)}]}  mRoundedCornerFrame=Rect(0, 0 - 0, 0), mPrivacyIndicatorBounds=PrivacyIndicatorBounds {static bounds=null rotation=0}, mSources= {  } host= from=android.view.ViewRootImpl$ViewRootHandler.handleMessageImpl:6727
I/ViewRootImpl@4506bac[](17453): handleResized, msg = 4 frames=ClientWindowFrames{frame=[0,0][1080,1529] display=[0,0][1080,1529] parentFrame=[0,0][0,0] parentClippedByDisplayCutout=false} forceNextWindowRelayout=false displayId=661 resizeMode=-1 frameChanged=false displayFrameChanged=false configChanged=true displayChanged=false
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
I/DecorView(17453): getCurrentDensityDpi: from app context. densityDpi=480 msg=remove_caption
I/DecorView(17453): [INFO] isPopOver=false config=true
I/DecorView(17453): updateCaptionType: isFloating=false isApplication=false hasWindowDecorCaption=false this=DecorView@eadac03[]
D/DecorView(17453): setCaptionType = 0, this = DecorView@eadac03[]
I/MSHandlerLifeCycle(17453): check: return. pkg=com.example.example isActivity=false callers=com.android.internal.policy.DecorView.onConfigurationChanged:3363 android.view.View.dispatchConfigurationChanged:16145 android.view.ViewGroup.dispatchConfigurationChanged:1646 android.view.ViewRootImpl.updateConfiguration:6502 android.view.ViewRootImpl.performConfigurationChange:6465
I/MSHandlerLifeCycle(17453): removeMultiSplitHandler: no exist. decor=DecorView@eadac03[]
I/CustomUnityPlayer(17453): ORIENTATION CHANGED
I/ViewRootImpl@4506bac[](17453): handleResized mSyncSeqId = 0
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
I/ViewRootImpl@4506bac[](17453): Resizing android.view.ViewRootImpl@32e9698: frame = [0,0][1080,1394] reportDraw = false forceLayout = false syncSeqId = 0
D/InsetsController(17453): onStateChanged: InsetsState: {mDisplayFrame=Rect(0, 0 - 1080, 1335), mDisplayCutout=DisplayCutout{insets=Rect(0, 0 - 0, 0) waterfall=Insets{left=0, top=0, right=0, bottom=0} boundingRect={Bounds=[Rect(0, 0 - 0, 0), Rect(0, 0 - 0, 0), Rect(0, 0 - 0, 0), Rect(0, 0 - 0, 0)]} cutoutPathParserInfo={CutoutPathParserInfo{displayWidth=0 displayHeight=0 physicalDisplayWidth=0 physicalDisplayHeight=0 density={0.0} cutoutSpec={} rotation={0} scale={0.0} physicalPixelDisplaySizeRatio={0.0}}}}, mRoundedCorners=RoundedCorners{[RoundedCorner{position=TopLeft, radius=0, center=Point(0, 0)}, RoundedCorner{position=TopRight, radius=0, center=Point(0, 0)}, RoundedCorner{position=BottomRight, radius=0, center=Point(0, 0)}, RoundedCorner{position=BottomLeft, radius=0, center=Point(0, 0)}]}  mRoundedCornerFrame=Rect(0, 0 - 0, 0), mPrivacyIndicatorBounds=PrivacyIndicatorBounds {static bounds=null rotation=0}, mSources= {  } host= from=android.view.ViewRootImpl$ViewRootHandler.handleMessageImpl:6727
I/ViewRootImpl@4506bac[](17453): handleResized, msg = 4 frames=ClientWindowFrames{frame=[0,0][1080,1394] display=[0,0][1080,1394] parentFrame=[0,0][0,0] parentClippedByDisplayCutout=false} forceNextWindowRelayout=false displayId=661 resizeMode=-1 frameChanged=true displayFrameChanged=true configChanged=true displayChanged=false
I/DecorView(17453): getCurrentDensityDpi: from app context. densityDpi=480 msg=remove_caption
I/DecorView(17453): [INFO] isPopOver=false config=true
I/DecorView(17453): updateCaptionType: isFloating=false isApplication=false hasWindowDecorCaption=false this=DecorView@eadac03[]
D/DecorView(17453): setCaptionType = 0, this = DecorView@eadac03[]
I/MSHandlerLifeCycle(17453): check: return. pkg=com.example.example isActivity=false callers=com.android.internal.policy.DecorView.onConfigurationChanged:3363 android.view.View.dispatchConfigurationChanged:16145 android.view.ViewGroup.dispatchConfigurationChanged:1646 android.view.ViewRootImpl.updateConfiguration:6502 android.view.ViewRootImpl.performConfigurationChange:6465
I/MSHandlerLifeCycle(17453): removeMultiSplitHandler: no exist. decor=DecorView@eadac03[]
I/CustomUnityPlayer(17453): ORIENTATION CHANGED
I/ViewRootImpl@4506bac[](17453): handleResized mSyncSeqId = 0
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
I/ViewRootImpl@4506bac[](17453): performTraversals mFirst=false windowShouldResize=true viewVisibilityChanged=false mForceNextWindowRelayout=false params=null
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
I/ViewRootImpl@4506bac[](17453): Resizing android.view.ViewRootImpl@32e9698: frame = [0,0][1080,1335] reportDraw = false forceLayout = false syncSeqId = 0
I/ViewRootImpl@4506bac[](17453): updateBlastSurfaceIfNeeded mBlastBufferQueue=0xb40000778459f180 isSameSurfaceControl=true
I/BLASTBufferQueue(17453): update, w= 1080 h= 1335 mName = ViewRootImpl@4506bac[] mNativeObject= 0xb40000778459f180 sc.mNativeObject= 0xb400007712fde740 format= -2 caller= android.view.ViewRootImpl.updateBlastSurfaceIfNeeded:2898 android.view.ViewRootImpl.relayoutWindow:9847 android.view.ViewRootImpl.performTraversals:3884 android.view.ViewRootImpl.doTraversal:3116 android.view.ViewRootImpl$TraversalRunnable.run:10885 android.view.Choreographer$CallbackRecord.run:1301
I/ViewRootImpl@4506bac[](17453): Relayout returned: old=(0,0,1080,1394) new=(0,0,1080,1335) req=(1080,1394)0 dur=15 res=0x0 s={true 0xb400007521fd1800} ch=false seqId=0
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
I/ViewRootImpl@4506bac[](17453): mThreadedRenderer.updateSurface() mSurface={isValid=true 0xb400007521fd1800}
I/ViewRootImpl@4506bac[](17453): updateBoundsLayer: t = android.view.SurfaceControl$Transaction@d0b5613 sc = Surface(name=Bounds for - @0)/@0x7bfa050 frame = 7
D/OpenGLRenderer(17453): setSurface() destroyed EGLSurface
D/OpenGLRenderer(17453): destroyEglSurface
I/ViewRootImpl@4506bac[](17453): mWNT: t=0xb400007712ddf000 mBlastBufferQueue=0xb40000778459f180 fn= 7 caller= android.view.ViewRootImpl.prepareSurfaces:2985 android.view.ViewRootImpl.performTraversals:4233 android.view.ViewRootImpl.doTraversal:3116
I/SurfaceView@69b34db(17453): Changes: creating=false format=false size=true visible=false alpha=false hint=false mUseAlpha=false visible=false left=false top=false
I/SurfaceView@69b34db(17453): 110834907 Cur surface: Surface(name=null)/@0xdff69f2
D/OpenGLRenderer(17453): eglCreateWindowSurface
I/BLASTBufferQueue(17453): update, w= 1080 h= 1335 mName = null mNativeObject= 0xb40000752d562700 sc.mNativeObject= 0xb400007712f20400 format= 4 caller= android.view.SurfaceView.setBufferSize:1304 android.view.SurfaceView.performSurfaceTransaction:918 android.view.SurfaceView.updateSurface:1105 android.view.SurfaceView.setFrame:525 android.view.View.layout:24966 android.widget.FrameLayout.layoutChildren:332
I/SurfaceView@69b34db(17453): pST: sr = Rect(0, 0 - 1080, 1335) sw = 1080 sh = 1335
D/SurfaceView@69b34db(17453): performSurfaceTransaction RenderWorker position = [0, 0, 1080, 1335] surfaceSize = 1080x1335
I/SurfaceView@69b34db(17453): applyTransactionOnVriDraw: vri = ViewRootImpl@4506bac[] fRS = false t = 0xb40000752d5d2d00 android.view.SurfaceView.performSurfaceTransaction:959 android.view.SurfaceView.updateSurface:1105 android.view.SurfaceView.setFrame:525
I/ViewRootImpl@4506bac[](17453): applyTransactionOnDraw: mRemoved = false isHardwareEnabled = true t = 0xb40000752d5d2d00android.view.SurfaceView.applyTransactionOnVriDraw:2048 android.view.SurfaceView.performSurfaceTransaction:959 android.view.SurfaceView.updateSurface:1105 android.view.SurfaceView.setFrame:525 android.view.View.layout:24966
I/SurfaceView@69b34db(17453): updateSurface: mVisible = true mSurface.isValid() = true
I/SurfaceView@69b34db(17453): updateSurface: mSurfaceCreated = true surfaceChanged = false visibleChanged = false
I/SurfaceView@69b34db(17453): surfaceChanged -- format=4 w=1080 h=1335
I/SurfaceView@69b34db(17453): surfaceChanged (1080,1335) 1 #5 android.view.SurfaceView{69b34db VFE...... ......ID 0,0-1080,1335 #7f05004c app:id/unitySurfaceView}
I/SurfaceView@69b34db(17453): surfaceRedrawNeeded
V/SurfaceView@69b34db(17453): Layout: x=0 y=0 w=1080 h=1335, frame=Rect(0, 0 - 1080, 1335)
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
D/SurfaceView@69b34db(17453): updateSurfacePosition RenderWorker, frameNr = 7, position = [0, 0, 1080, 1335] surfaceSize = 1080x1335
I/SurfaceView@69b34db(17453): uSP: rtp = Rect(0, 0 - 1080, 1335) rtsw = 1080 rtsh = 1335
I/SurfaceView@69b34db(17453): onSSPAndSRT: pl = 0 pt = 0 sx = 1.0 sy = 1.0
I/ViewRootImpl@4506bac[](17453): handleResized, msg = 4 frames=ClientWindowFrames{frame=[0,0][1080,1335] display=[0,0][1080,1335] parentFrame=[0,0][0,0] parentClippedByDisplayCutout=false} forceNextWindowRelayout=false displayId=661 resizeMode=-1 frameChanged=false displayFrameChanged=false configChanged=false displayChanged=false
I/SurfaceView@69b34db(17453): aOrMT: ViewRootImpl@4506bac[] t = android.view.SurfaceControl$Transaction@fbd3a5a fN = 7 android.view.SurfaceView.-$$Nest$mapplyOrMergeTransaction:0 android.view.SurfaceView$SurfaceViewPositionUpdateListener.positionChanged:1537 android.graphics.RenderNode$CompositePositionUpdateListener.positionChanged:373
I/ViewRootImpl@4506bac[](17453): mWNT: t=0xb400007521eb0200 mBlastBufferQueue=0xb40000778459f180 fn= 7 caller= android.view.SurfaceView.applyOrMergeTransaction:1455 android.view.SurfaceView.-$$Nest$mapplyOrMergeTransaction:0 android.view.SurfaceView$SurfaceViewPositionUpdateListener.positionChanged:1537
I/ViewRootImpl@4506bac[](17453): mWNT: t=0xb40000752d5d2d00 mBlastBufferQueue=0xb40000778459f180 fn= 7 caller= android.view.ViewRootImpl.lambda$applyTransactionOnDraw$11$android-view-ViewRootImpl:12865 android.view.ViewRootImpl$$ExternalSyntheticLambda1.onFrameDraw:4 android.graphics.HardwareRenderer$FrameDrawingCallback.onFrameDraw:924
I/SurfaceView@69b34db(17453): finishedDrawing
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned
E/BufferQueueProducer(17453): [ImageReader-1080x2000f22m4-17453-17](id:442d0000001b,api:1,p:1104,c:17453) dequeueBuffer: BufferQueue has been abandoned

Application finished.

Exited (-1).

I'm having the same issue with GlSurfaceView rendering videos.
I use OpenGL ES 2.0. But I'm recreating the view on Android 12 and it's freezing above 13. In 3.20.0-1.1.pre is also the size of the error.

@m8417  Can you share a project that reproduces it? I'd like to see this happening without including an entire Unity app that theoretically could do anything.
Progress update
I noticed that this doesn't even need a keyboard or screen rotation, simply changing the size of a parent widget triggers this too.
Which makes this issue a lot worse for both 3.19 and 3.20.
For 3.20 this also demonstrates that the 'wrong' size isn't random, it is exactly twice the expected transform.
(The green color is a container directly around the AndroidView, indicating the size of the widget)

 Init at 100% body Resize 100% -> 50%
Init at 50% bodyResize 50% -> 100%

I did manage to change Unity's layoutparams in an onConfigurationChanged function, but this only fixes the render resolution, the render is still somehow clipped.

AFAICT this is a Unity plugin bug and not a bug in Flutter's engine so I'm going to close this issue.
Feel free to open new issues with reproduction steps if you discover a new bug in the engine.

@timbotimbo @johnmccutchan  This is a project that reproduce this issue with SurfaceView. flutter-GLTest
I started with GLSurfaceView, then changed to SurfaceView and found the same issue. I learned that Unity is also rendered via SurfaceView. So I think it's Flutter engine‘s bug.

Thanks for the sample, i will investigate tomorrow.

I can confirm that @m8417's sample produces identical behavior.

3.19 stable: throws debufferqueue errors
3.20.0-1.1.pre: the resize result seems to be applied twice.

I have been able to reproduce with the latest reproduction. I was able to solve the issue by doing the following:

Add a SurfaceHolder callback that does the following:

in surfaceChanged call holder.setFixedSize(width, height);
in surfaceRedrawNeeded render the frame.

Without the call to setFixedSize the first frame produced for the SurfaceView will be the wrong size and be rejected:
[E/BLASTBufferQueue](http://e/BLASTBufferQueue)( 8674): [SurfaceView[]#4](f:0,a:1) rejecting buffer:active_size=703x1501, requested_size=703x1501 buffer{size=1405x2696 transform=0}

Oh, I also forgot, I had to make one modification to the engine as well.

gltest.diff.patch

@johnmccutchan  I'm still able to reproduce the issue with your change. I was commited your changes to the project.  flutter-GLTest

@m8417 The change was merged to master after your comment, try the latest master branch now.
The size is correct after I changed to latest master branch. Thank you!

authors: darshankawar johnmccutchan m8417 timbotimbo


text:
Flutter Android keyboard dismisses on notification panel pull down

Steps to reproduce
Youtube demonstration
As shown in the video, in my Flutter Android application running on a device, I tap on a text field, and it gains focus, but when I pull down the notification center and then close the notification center, the input focus gets lost, and the keyboard goes away. I don't want this behavior; instead, I want the keyboard to stay up and focus to remain unchanged, as it does in all other non-Flutter apps I tested. Anyone know how to achieve this?
Code sample
Code sample
TextField()

What target platforms are you seeing this bug on?
Android
OS/Browser name and version | Device information
Any android device
Does the problem occur on emulator/simulator as well as on physical devices?
Unknown
Logs
Logs
[Paste your logs here]

Flutter Doctor output
Doctor output
[✓] Flutter (Channel stable, 3.19.6, on Microsoft Windows [Version 10.0.22631.3527], locale en-US)
[✓] Windows Version (Installed version of Windows is version 10 or higher)
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0-rc2)
[✓] Chrome - develop for the web
[✓] Visual Studio - develop Windows apps (Visual Studio Community 2022 17.6.0)
[✓] Android Studio (version 2022.2)
[✓] IntelliJ IDEA Ultimate Edition (version 2024.1)
[✓] Connected device (4 available)
[✓] Network resources

• No issues found!

@ramsayamarin
Check if your issue is same as https://github.com/flutter/flutter/issues/52599 or not.

@darshankawar Yes, I now believe the root cause is not the notification panel since it does trigger lifecycle events, so it is indeed the same issue. However, that issue has been stale for years, so I think it is worth raising attention to it once more. Can you please advise on why it has been unresolved for years? Thank you.

Thanks for the update. I suggest you to follow up in that issue for further updates. You may share your findings in it for better tracking. Closing this as a duplicate.

source: gharchive/issue

authors: darshankawar ramsayamarin

repo: flutter/flutter

license_type: permissive

license_source: github-api


text:
libtxt: Single line RTL text is clipped on the beginning (right) of the text instead of the end (left).

When a single line of text (defined like this):
new Text('תווית ארוכה מאוד תווית ארוכה מאוד',
         maxLines: 1,
         softWrap: false,
         overflow: TextOverflow.fade,
         textAlign: TextAlign.start,
         textDirection: TextDirection.rtl)

Reaches the end of its allowed size (e.g. it's placed inside a box that is constrained to a width smaller than the text box), it will clip as expected, but on RTL it will clip off the beginning of the string instead of the end.
I tried tracking this down, and got lost when it jumped to the platform side, but I know that it shows the same behavior on Blink and libtxt.  I'm assuming it is somewhere in the ParagraphBuilder, or in Paragraph.layout.  Looking at the ui.ParagraphStyle and the TextPainter, I couldn't see anything amiss.
For instance, the string above is clipped like this:

When the string should start (on the left) with "תווית", and the long string should be clipped on the right.
LTR strings clip properly, so it's clearly something to do with something not handling/knowing about the text direction.

If softWrap is false, then RenderParagraph._layoutText will ask the engine to lay out the text with no width constraint.
RenderParagraph.paint will then paint the resulting TextPainter at the widget's left edge, resulting in the rightmost text being clipped.
One option would be to have RenderParagraph.paint apply an offset during painting if the textDirection is RTL.  The offset would be based on the difference between size.width and textSize.width seen in RenderParagraph.performLayout.
@Hixie

I think flutter doesn't care about rtl at all
it's the third open issue i faced this month which is related to rtl

@cactoos13 Sorry it's taking so long to fix. We care, it's just that the people on the team who would fix it are dealing with some even more critical stuff right now.

Issue replicable on latest stable (1.20.3)

flutter doctor -v
Flutter 1.20.3 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 216dee60c0 (2 days ago) • 2020-09-01 12:24:47 -0700
Engine • revision d1bc06f032
Tools • Dart 2.9.2

Running flutter doctor...
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 1.20.3, on Mac OS X 10.15.2 19C57, locale en-US)
[!] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
    ✗ Android license status unknown.
      Try re-installing or updating your Android SDK Manager.
      See https://developer.android.com/studio/#downloads or visit https://flutter.dev/docs/get-started/install/macos#android-setup for detailed instructions.
[✓] Xcode - develop for iOS and macOS (Xcode 11.6)
[✓] Android Studio (version 3.6)
[✓] Connected device (1 available)

Any updates regarding this? Thanks!

Any Updates?

Reproducible on stable 3.3 and master 3.7, the Text remains clipped at the beginning(right-most end) in the RTL text.

code sample
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const RTLTest(),
    );
  }
}

class RTLTest extends StatefulWidget {
  const RTLTest({super.key});

  @override
  _RTLTestState createState() => _RTLTestState();
}

class _RTLTestState extends State<RTLTest> {
  bool isFullScreen = false;

  /* To Update Screen Resolution Normal */
  void updateResolutionNormal() {
    SystemChrome.setPreferredOrientations([
      DeviceOrientation.landscapeRight,
      DeviceOrientation.landscapeLeft,
      DeviceOrientation.portraitUp,
      DeviceOrientation.portraitDown,
    ]);
  }

  /* To Update Screen Resolution LandscapeLeft,LandscapeRight */
  void updateResolutionLandscape() {
    SystemChrome.setPreferredOrientations([
      DeviceOrientation.landscapeRight,
      DeviceOrientation.landscapeLeft,
    ]);
  }

  void fullScreen() {}

  bool landScape = false;
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        backgroundColor: Colors.white,
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: const [
              Chip(
                  label: Text('תווית ארוכה מאוד תווית ארוכה מאוד',
                      maxLines: 1,
                      softWrap: false,
                      overflow: TextOverflow.fade,
                      textAlign: TextAlign.start,
                      textDirection: TextDirection.rtl)),
              Text('תווית ארוכה מאוד תווית ארוכה מאוד',
                  maxLines: 1,
                  softWrap: false,
                  overflow: TextOverflow.fade,
                  textAlign: TextAlign.start,
                  textDirection: TextDirection.rtl)
            ],
          ),
        ));
  }
}

flutter doctor -v (mac)
[✓] Flutter (Channel master, 3.7.0-13.0.pre.131, on macOS 13.1 22C65 darwin-arm64, locale en-IN)
    • Flutter version 3.7.0-13.0.pre.131 on channel master at /Users/mahesh/Development/flutter_master
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 0196e6050b (2 days ago), 2022-12-31 11:10:23 -0500
    • Engine revision 932591ec04
    • Dart version 3.0.0 (build 3.0.0-76.0.dev)
    • DevTools version 2.20.0
    • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks
      and upgrades.

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0-rc4)
    • Android SDK at /Users/mahesh/Library/Android/sdk
    • Platform android-33, build-tools 33.0.0-rc4
    • ANDROID_HOME = /Users/mahesh/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.0.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14A400
    • CocoaPods version 1.11.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2021.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)

[✓] IntelliJ IDEA Community Edition (version 2021.2.1)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 61.2.4
    • Dart plugin version 212.5080.8

[✓] VS Code (version 1.74.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.56.0

[✓] Connected device (3 available)
    • iPhone 12 Pro (mobile) • 026D5789-9E78-4AD5-B1B2-3F8D4E7F65E4 • ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-5 (simulator)
    • macOS (desktop)        • macos                                • darwin-arm64   • macOS 13.1 22C65 darwin-arm64
    • Chrome (web)           • chrome                               • web-javascript • Google Chrome 108.0.5359.124

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!

[✓] Flutter (Channel stable, 3.3.9, on macOS 12.6 21G115 darwin-arm, locale en-IN)
    • Flutter version 3.3.9 on channel stable at /Users/mahesh/Development/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision b8f7f1f986 (24 hours ago), 2022-11-23 06:43:51 +0900
    • Engine revision 8f2221fbef
    • Dart version 2.18.5
    • DevTools version 2.15.0

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0-rc4)
    • Android SDK at /Users/mahesh/Library/Android/sdk
    • Platform android-33, build-tools 33.0.0-rc4
    • ANDROID_HOME = /Users/mahesh/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.0.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14A400
    • CocoaPods version 1.11.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2021.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)

[✓] IntelliJ IDEA Community Edition (version 2021.2.1)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 61.2.4
    • Dart plugin version 212.5080.8

[✓] VS Code (version 1.70.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.53.20221101

[✓] Connected device (3 available)
    • iPhone 12 Pro (mobile) • 026D5789-9E78-4AD5-B1B2-3F8D4E7F65E4 • ios            •
      com.apple.CoreSimulator.SimRuntime.iOS-14-5 (simulator)
    • macOS (desktop)        • macos                                • darwin-arm64   • macOS 12.6 21G115 darwin-arm
    • Chrome (web)           • chrome                               • web-javascript • Google Chrome 107.0.5304.110

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!

cc: @jason-simmons

Reproducible on Channel stable, 3.10.3,  ((

authors: 1075dn Hixie VladlenRnd behradkhadem cactoos13 darshankawar gspencergoog jason-simmons maheshmnj


text:
How to find route one distance to another in flutter?

i cant understand where i put textfield in google map and how to calculate this?

@Hixie

Hi @vijaya06, can you provide more details of what you're trying to do? I assume you're using [lat,lng]s?
If so, there's a library called haversine :: https://pub.dartlang.org/packages/haversine, which might do what you're looking for.

i am fresher may be that's why i dont  understand how to implement map in flutter. i want to do map implementation where i could find distance and route between them.

Without additional information, we are unfortunately not sure how to resolve this issue. We are therefore reluctantly going to close this bug for now. Please don't hesitate to comment on the bug if you have any more information for us; we will reopen it right away!
Thanks for your contribution.

authors: nevi-me vijaya06 zoechi


text:
Create a harness for measuring thread times and dropped frames in flutter

@yjbanov has created flutter drive which can do functional integration tests.
This bug is about extending such to tell us about thread times and dropped frames.
Until we have something like this, we can't easily know (in an automated fashion) if we're fast yet.

Fixed by https://github.com/flutter/flutter/pull/3058. Next steps: create some benchmarks, create dashboard showing benchmark results.

authors: eseidelGoogle yjbanov


text:
How to expand or collapse ExpansionTile programatically

How can i collapse/expand ExpansionTile programatically ?
i dont see any way to toggle ExpansionTile in its definition
can anyone suggest me how can i achieve that ?

https://docs.flutter.io/flutter/material/ExpansionTile/initiallyExpanded.html
I assume I mentioned this already somewhere to you.
The problem is not ExpansionTile but how you propagate the state.
Try a simpler example without FAB and use a FlatButton or similar that is added to the same widget as the ExpansionTile and when you got that working you can extend to use it with FAB.
Then you might have a simple example and be able to ask more specific question.
Sorry, but we don't have the resources for individual support.
Please consider asking support questions in one of the other channels listed at http://flutter.io/support .

i dont see why you are referring FAB or FlatButton with ExpansionTile
i used that FAB's onPressed event just to toggle that Collapse/Expand ExpansionTile only and not for actual use
but still i dont find it that how to Collapse/Expand ExpansionTile
@zanderso

I just try to guide you with debugging. I don't have a solution ready in my head.
Anyway, it's a support question that should be discussed in other channels.

I tried gitter but no answer
i don't know where else to ask

Set up a proper StackOverflow question.

how can callback to ExpansionTile, if one Expaneded then other will close automatically.

any solution to this problem yet ?

I think you'll need to track the expansion state of each expansion tile individually. Something like:
Map<String, bool> expansionState = Map();

On initialization, you'll need to specify the keys and whether or not you want the associated expansion tile to show as opened or closed. In my code I have a List for the expansion tile names. On page load, I do the following:
categoryList.forEach((name) {
              expansionState.putIfAbsent(name, () => true);
            });

Then the builder simply refers to the expansionState:
Widget _buildCategory(String name, List<OrderItem> children) {
    return ExpansionTile(
      key: PageStorageKey<String>(name),
      initiallyExpanded: expansionState[name], // true,
      title: RichText(
          text: TextSpan(
        text: name,
        style: TextStyle(
            color: Colors.blue[800], fontSize: 16, fontWeight: FontWeight.bold),
        children: <TextSpan>[
          TextSpan(
              text: ' - ' + children.length.toString() + ' items',
              style: TextStyle(
                  color: Colors.grey[800],
                  fontSize: 16,
                  fontWeight: FontWeight.normal)),
        ],
      )),
      onExpansionChanged: ((newState) {
        print(name + ' is now ' + newState.toString());
        expansionState[name] = newState;
      }),
      children: children.map<Widget>(_buildChild).toList(),
    );
  }

At this point, you have the ability to add a button whose onPressed() method can manipulate the expansionState map any way you want inside of a setState() call. You could open them all, close them all, toggle their current states, etc.

@aydin-faruk , good solution!! But it's a pity that animation effect on the expanding/collapsing was lost … Any idea to recover it?

hi ! aydin-faruk.  How to do samething in without listview builder.

but there is one more thing on aydin-faruk's comment,
I changed the duration from 20000 into more smaller value, after that it works on my side,
thanks

@aydin-faruk  kod çok güzel sağolasın 👍

@aydin-faruk it is a great solution. But I have one bug I trying to solve for two days. After calling function onExpasionChanged, the state is restarting and listview scrolling to top, but not to expansion that I expanded. IS there any solution?

Hey @nurbek-b . I faced the same challenge. I used scroll controller (from listview.builder) and scroll to the one you are expanding. It solved my problem.
https://api.flutter.dev/flutter/widgets/ScrollController-class.html
Please let me know if it helps.

I am working on this way for many hours indeed)), but no luck. Can you show me the code you wrote? I'm already desperate.))

I have solution for this
First copy the ExpansionTile to another dart file
then add this class under the ExpansionTile
`class ExpandedTileController extends ChangeNotifier {
bool isExpanded;
void expand() {
isExpanded = true;
notifyListeners();
}
void collapse() {
isExpanded = false;
notifyListeners();
}
}when we create the class we have to get it from user@required this.controller,
final ExpandedTileController controller;`
After adding, call this class inside of state
ExpandedTileController controller;
add below the code in initstate
controller = widget.controller;     widget.controller.addListener(() {         setState(() {           _isExpanded = controller.isExpanded;         });         _handleController();     });
handle Controller
_handleController(){     if (_isExpanded) {         _controller.forward();       } else {         _controller.reverse().then<void>((void value) {           if (!mounted) return;           setState(() {             // Rebuild without widget.children.           });         });       }   }

For those who are still looking for the answer, I had used ExpansionPanel() to expand/collapse tiles programmatically
here's sample code that I used
class _ToolsPageState extends State<ToolsPage> {
  List<bool> _states = List();
  @override
  void initState() {
    super.initState();
    _states.addAll([false, false, false, false, false]);
  }

  @override
  Widget build(BuildContext context) {
    return ListView(
      children: <Widget>[
        ExpansionPanelList(
          expansionCallback: (int index, bool value) {
            setState(() {
              for (int i = 0; i < _states.length; i++) {
                if (i != index) {
                  _states[i] = false;
                }
              }
              _states[index] = !_states[index];
            });
          },
          children: [
            ExpansionPanel(
              isExpanded: _states[0],
              headerBuilder: (BuildContext context, bool isExpanded) =>
                  ListTile(
                leading: Icon(FontAwesomeIcons.bookmark),
                title: Text("text"),
              ),
              body: ListTile(
                leading: SizedBox(),
                title: Text("text 2"),
              ),
            ),
            ExpansionPanel(
              isExpanded: _states[1],
              headerBuilder: (BuildContext context, bool isExpanded) =>
                  ListTile(
                leading: Icon(FontAwesomeIcons.bookOpen),
                title: Text("text"),
              ),
              body: Column(
                children: <Widget>[
                  ListTile(
                    leading: SizedBox(),
                    title: Text("Text 1"),
                  ),
                  ListTile(
                    leading: SizedBox(),
                    title: Text("text"),
                  ),
                  ListTile(
                    leading: SizedBox(),
                    title: Text("textCode"),
                     ),
                  ListTile(
                    leading: SizedBox(),
                    title: Text("Text"),
                  ),
                ],
              ),
            ),
            ExpansionPanel(
              isExpanded: _states[2],
              headerBuilder: (BuildContext context, bool isExpanded) =>
                  ListTile(
                leading: Icon(FontAwesomeIcons.graduationCap),
                title: Text("Text"),
              ),
              body: Column(
                children: <Widget>[
                  ListTile(
                    leading: SizedBox(),
                    title: Text("Text"),
                  )
                ],
              ),
            ),
            ExpansionPanel(
              isExpanded: _states[3],
              headerBuilder: (BuildContext context, bool isExpanded) =>
                  ListTile(
                leading: Icon(FontAwesomeIcons.child),
                title: Text("Another"),
              ),
              body: Column(
                children: <Widget>[
                  ListTile(
                    leading: SizedBox(),
                    title: Text("Text"),
                  )
                ],
              ),
            ),
            ExpansionPanel(
              isExpanded: _states[4],
              headerBuilder: (BuildContext context, bool isExpanded) =>
                  ListTile(
                leading: Icon(FontAwesomeIcons.bookOpen),
                title: Text("Text"),
              ),
              body: Column(
                children: <Widget>[
                  ListTile(
                    leading: SizedBox(),
                    title: Text("Text"),
                  )
                ],
              ),
            ),
          ],
        ),
      ],
    );
  }
}

this is one of my old code if some syntax is updated

i did it by managing state (say: isExpanded ) by provider and changing the state on clicking FAB or any Widget..
now show its childeren widget if expanded else show Container()

authors: AmbujaAK Fayiz-A eyponder hariom007 ilkbahar jagdishjadeja jdavies jlokesh20 nurbek-b shree-krishna-gapi tokki-stack zacktagnan zoechi