我需要在 init
中启动应用程序时显示 snackbar 以检查互联网连接。我在自定义类中的代码是:
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();
}
我已经返回了一个正确执行的打印语句,但是当返回一个像 snackbar 或对话框这样的小部件时,它没有出现也没有显示任何异常。
最佳答案
发现答案是使用 flutter_after_layout
,它在 build
函数完成后执行一个函数,以便可以显示 SnackBar
。在这个关于 how to run method when build completes 的相关答案中可以找到更多解释。 .
关于自定义类的方法中未显示 Flutter snackbar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54976821/