Flutter快餐栏未在自定义类的方法中显示

时间:2019-03-04 04:53:16

标签: flutter

我需要在init中启动应用时显示小吃栏,以检查Internet的连通性。我在自定义类中的代码是:

import 'package:connectivity/connectivity.dart';
//import 'dart:async';
import 'package:flutter/material.dart';
import 'package:system_setting/system_setting.dart'; 

class Network{
   checkNetwork() async {
        var connectivityResult = await (Connectivity().checkConnectivity());
        if (connectivityResult == ConnectivityResult.none) {
          return 
          //print("no internet");
          SnackBar(
              content:  Text("Check internet Connectivity"),
              action: SnackBarAction(
                label: "Settings",
                onPressed: (){
                  SystemSetting.goto(SettingTarget.NOTIFICATION);
                },
              ),
            ); 
            //scaffoldKey.currentState.showSnackBar(snackbar);
            }
} 
}

并按如下方式访问该方法:

 @override
  void initState() {
    super.initState();
    //Network.checkNetwork();

    Network objnetwork = Network();
    objnetwork.checkNetwork();
 }

我已经返回了一条已正确执行的打印语句,但是当返回小部件(如快餐栏或对话框)时,它不会出现也不显示任何异常。

1 个答案:

答案 0 :(得分:1)

发现答案使用的是flutter_after_layout,该函数在build函数完成后执行一个函数,因此可以显示SnackBar。在有关 how to run method when build completes的相关答案中找到更多解释。