如何在颤动中显示 SnackBar?

Posted

技术标签:

【中文标题】如何在颤动中显示 SnackBar?【英文标题】:how to show SnackBar in flutter? 【发布时间】:2021-03-11 16:35:01 【问题描述】:

如果没有可用的互联网连接,我想显示 SnackBar 怎么办?我想在别的地方使用snackbar怎么办?

 Future<void> checkStatus(ConnectivityResult result) async
  
    
      if(result == ConnectivityResult.mobile || result == ConnectivityResult.wifi)
      
        changeValues("Connected");
      
      else
      
         Show SnackBar Here
      
    

【问题讨论】:

【参考方案1】:

签出this。

final snackBar = SnackBar(content: Text('Yay! A SnackBar!'));

// Find the Scaffold in the widget tree and use it to show a SnackBar.
Scaffold.of(context).showSnackBar(snackBar);

【讨论】:

【参考方案2】:

这是使用GlobalKey 显示SnackBar 的一种方式。

首先我们需要定义一个 GlobalKey 变量 => final GlobalKey _scaffoldKey

然后将其作为 Scaffold 中的 key => key: _scaffoldKey

之后,您可以通过自己的方法使用它 => _scaffoldKey.currentState.showSnackBar

完整代码:

import 'package:flutter/material.dart';

class YourClass extends StatefulWidget 
  const YourClass(Key key) : super(key: key);

  @override
  _YourClassState createState() => _YourClassState();


class _YourClassState extends State<YourClass> 
  final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();

  void showSnackBar(String text) 
    _scaffoldKey.currentState.showSnackBar(SnackBar(content: Text(text)));
  

  @override
  Widget build(BuildContext context) 
    return Scaffold(
      key: _scaffoldKey,
      body: RaisedButton(
          onPressed: () 
            showSnackBar("Your Custom Message");
          ,
          child: Text("Show Snackbar")),
    );
  

【讨论】:

以上是关于如何在颤动中显示 SnackBar?的主要内容,如果未能解决你的问题,请参考以下文章

如何在颤动中显示小吃吧无限持续时间?

如何在颤动的屏幕上显示一个小部件?

如何在颤动中更改小吃店的填充

显示小吃店颤动后导航器弹出

如何在 Flutter 中正确显示 Snackbar?

如何在 Flutter 中显示 SnackBar?