我需要在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();
}
我已经返回了一条已正确执行的打印语句,但是当返回小部件(如快餐栏或对话框)时,它不会出现也不显示任何异常。
答案 0 :(得分:1)
发现答案使用的是flutter_after_layout
,该函数在build
函数完成后执行一个函数,因此可以显示SnackBar
。在有关 how to run method when build completes的相关答案中找到更多解释。