Flutter 在橫屏側(cè)面Dialog中顯示SnackBar時(shí),底下一層也會(huì)重復(fù)顯示一個(gè)

當(dāng)手機(jī)橫屏?xí)r,在側(cè)面彈出不全屏的dialog后,需要在dialog中顯示SnackBar時(shí),發(fā)現(xiàn)除了dialog中會(huì)顯示SnackBar,底下一層也會(huì)重復(fù)顯示一個(gè)SnackBar,現(xiàn)在要去掉底下一層那個(gè)顯示。
首先顯示SnackBar需要Scaffold.

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: TextButton(
          child: const Text('顯示消息'),
          onPressed: () {
            ScaffoldMessenger.of(context).showSnackBar(const SnackBar(content: Text('顯示SnackBar')));
          },
        ),
      ),
    );

以上代碼就可以顯示一個(gè)SnackBar消息
但是在橫屏側(cè)邊非全屏dialog中會(huì)發(fā)現(xiàn)底部有重復(fù)的顯示。
要去掉底部那個(gè)SnackBar,首先要使用自己界面的Scaffold的context

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Builder(
        builder: (context) {
          return Center(
            child: TextButton(
              child: const Text('顯示消息'),
              onPressed: () {
                ScaffoldMessenger.of(context).showSnackBar(const SnackBar(content: Text('顯示SnackBar')));
              },
            ),
          );
        }
      ),
    );

如上面代碼所示,加一層Builder嵌套可以讓下面使用的是當(dāng)前Scaffold的context,但是此時(shí)運(yùn)行發(fā)現(xiàn)還是會(huì)有底部一層的SnackBar顯示,這個(gè)時(shí)候需要通過ScaffoldMessenger來做隔斷,如下

  @override
  Widget build(BuildContext context) {
    return ScaffoldMessenger(
      child: Scaffold(
        body: Builder(
          builder: (context) {
            return Center(
              child: TextButton(
                child: const Text('顯示消息'),
                onPressed: () {
                  ScaffoldMessenger.of(context).showSnackBar(const SnackBar(content: Text('顯示SnackBar')));
                },
              ),
            );
          }
        ),
      ),
    );

使用ScaffoldMessenger嵌套以后就可以將SnackBar顯示限定在當(dāng)前的Scaffold中,這樣底部就不會(huì)再顯示SnackBar了

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容