【问题标题】:Flutter snackbar is not showing in the method of the custom class自定义类的方法中未显示 Flutter 小吃吧
【发布时间】:2019-07-25 09:16:35
【问题描述】:

我需要在init 中显示应用程序启动时的小吃栏,以检查互联网连接。我在自定义类中的代码是:

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();
 }

我返回了一个正确执行的打印语句,但是当返回一个像小吃栏或对话框这样的小部件时,它没有出现也没有显示任何异常。

【问题讨论】:

  • 你能告诉我们你调用initState()函数的Scaffold吗?
  • @MazinIbrahim 我没有在脚手架中调用它。 initState()statefullWidget
  • 显示快餐栏的代码在哪里?
  • @ShyjuM 看到我分享的上面代码中的问题
  • @JabirIshaq 是注释代码吗?您正在将脚手架键传递给 Network 类?

标签: flutter


【解决方案1】:

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

【讨论】:

  • stackoverflow.com/questions/52164369/… 发现这是备用的,但我需要通过调用单独的类在应用程序的每个页面上显示这个,因为在每个页面上重复代码是不好的做法
  • 恭喜!
猜你喜欢
  • 2020-10-18
  • 2021-11-04
  • 2021-10-24
  • 2021-12-08
  • 1970-01-01
  • 2017-12-14
  • 1970-01-01
  • 2020-05-18
  • 1970-01-01
相关资源
最近更新 更多