windy windy
windy windy

Reputation: 21

Flutter App Shows White Screen in Xiaomi HyperOS 2 (Redmi K80 Pro) Floating Window When Using Size Constraints

I’m encountering a persistent white screen issue when running a Flutter app in floating window mode on a Xiaomi Redmi K80 Pro with HyperOS 2. The problem occurs specifically when applying size constraints to the app’s root widget ( e.g., using SizedBox with MediaQuery-derived dimensions). Without constraints, the app displays correctly, but adding any width/height logic triggers the white screen.

Code Example:

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Center(
        child: SizedBox(
          width: 100,
          height: 100,
          child: Center(
            child: Text(
              '$_counter',
              style: Theme.of(context).textTheme.headlineMedium,
            ),
          ),
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ),
    );
  }
}

Observed Behavior:

Log Excerpts:

E/BinderMonitor( 7845): err open binder_delay errno=13
W/ample.untitled6( 7845): type=1400 audit(0.0:248188): avc:  denied  { write } for  name="binder_delay" dev="proc" ino=4026533067 scontext=u:r:untrusted_app:s0:c11,c258,c512,c768 tcontext=u:object_r:proc_mi_log:s0 tclass=file permissive=0 app=com.example.untitled6
D/VRI[MainActivity]( 7845): vri.reportNextDraw android.view.ViewRootImpl.handleResized:2768 android.view.ViewRootImpl.-$$Nest$mhandleResized:0 android.view.ViewRootImpl$W.resized:12716 android.app.servertransaction.WindowStateResizeItem.execute:64 android.app.servertransaction.WindowStateTransactionItem.execute:59 
D/VRI[MainActivity]( 7845): vri.reportNextDraw android.view.ViewRootImpl.performTraversals:4936 android.view.ViewRootImpl.doTraversal:3547 android.view.ViewRootImpl$TraversalRunnable.run:11558 android.view.Choreographer$CallbackRecord.run:1747 android.view.Choreographer$CallbackRecord.run:1756 
D/VRI[MainActivity]( 7845): vri.Setup new sync=wmsSync-VRI[MainActivity]#5
D/VRI[MainActivity]( 7845): vri.reportDrawFinished
E/Surface ( 7845): freeAllBuffers: 1 buffers were freed while being dequeued!
I/HandWritingStubImpl( 7845): refreshLastKeyboardType: 1
I/HandWritingStubImpl( 7845): getCurrentKeyboardType: 1
I/ample.untitled6( 7845): ProcessProfilingInfo new_methods=19 is saved saved_to_disk=1 resolve_classes_delay=8000
D/VRI[MainActivity]( 7845): vri.reportNextDraw android.view.ViewRootImpl.handleResized:2768 android.view.ViewRootImpl.-$$Nest$mhandleResized:0 android.view.ViewRootImpl$W.resized:12716 android.app.servertransaction.WindowStateResizeItem.execute:64 android.app.servertransaction.WindowStateTransactionItem.execute:59 
D/VRI[MainActivity]( 7845): vri.Setup new sync=wmsSync-VRI[MainActivity]#7
D/VRI[MainActivity]( 7845): vri.reportDrawFinished
D/VRI[MainActivity]( 7845): vri.reportNextDraw android.view.ViewRootImpl.handleResized:2768 android.view.ViewRootImpl.-$$Nest$mhandleResized:0 android.view.ViewRootImpl$W.resized:12716 android.app.servertransaction.WindowStateResizeItem.execute:64 android.app.servertransaction.WindowStateTransactionItem.execute:59 
D/VRI[MainActivity]( 7845): vri.Setup new sync=wmsSync-VRI[MainActivity]#9
D/VRI[MainActivity]( 7845): vri.reportDrawFinished
I/HandWritingStubImpl( 7845): refreshLastKeyboardType: 1
I/HandWritingStubImpl( 7845): getCurrentKeyboardType: 1
D/VRI[MainActivity]( 7845): vri.reportNextDraw android.view.ViewRootImpl.handleResized:2768 android.view.ViewRootImpl.-$$Nest$mhandleResized:0 android.view.ViewRootImpl$W.resized:12716 android.app.servertransaction.WindowStateResizeItem.execute:64 android.app.servertransaction.WindowStateTransactionItem.execute:59 
D/VRI[MainActivity]( 7845): vri.reportNextDraw android.view.ViewRootImpl.performTraversals:4936 android.view.ViewRootImpl.doTraversal:3547 android.view.ViewRootImpl$TraversalRunnable.run:11558 android.view.Choreographer$CallbackRecord.run:1747 android.view.Choreographer$CallbackRecord.run:1756 
D/VRI[MainActivity]( 7845): vri.Setup new sync=wmsSync-VRI[MainActivity]#12
D/VRI[MainActivity]( 7845): vri.reportDrawFinished
E/Surface ( 7845): freeAllBuffers: 1 buffers were freed while being dequeued! 

Device/Environment:

Question:

Additional Context:

Troubleshooting Attempts:

  1. Tested with fixed values (e.g., width: 300) instead of MediaQuery—same result.
  2. Verified Flutter’s widget tree structure—no errors in layout debugging.
  3. Tried forcing software rendering with debugRepaintRainbowEnabled—no improvement.

Upvotes: 2

Views: 23

Answers (0)

Related Questions