Flutter在initState()中显示弹窗时屏幕变暗的原因排查
在Flutter initState中显示弹窗屏幕变暗的问题解决
语法错误先修正
你的代码里多了一行无效的Scaffold:,这属于语法错误,直接删掉这行才能正常执行。initState调用弹窗的时机问题
initState执行时,Widget还没完成构建,直接调用showDialog会因为上下文未完全就绪出现异常表现。需要延迟到第一帧绘制完成后再触发弹窗,用WidgetsBinding.instance.addPostFrameCallback来实现:@override void initState() { super.initState(); if (element.isCharacteristic42) { WidgetsBinding.instance.addPostFrameCallback((_) { showDialog( context: context, builder: (context) { return AlertDialog( title: Text('Be Careful an obstacle was detected'), backgroundColor: Color.fromARGB(200, 231, 148, 54), alignment: Alignment.topCenter, ); } ); }); } }弹窗背景透明度问题
你设置的backgroundColor: Color.fromARGB(45, 231, 148, 54)里,第一个参数是透明度(0-255),45的透明度几乎让弹窗完全透明,所以你只会看到showDialog默认的背景遮罩(屏幕变暗),却看不到弹窗内容。把透明度值调高到200左右,就能正常看到弹窗了。
内容的提问来源于stack exchange,提问作者rania
相关产品推荐
相关产品推荐

