我把它放在
initState一个
State(的
StatefulWidget)。
将其放置在小部件的
build方法中
Stateless很诱人,但这将多次触发您的警报。
在下面的示例中,当设备未连接到Wifi时,它将显示警报,如果未连接,则显示[重试]按钮。
import 'package:flutter/material.dart';import 'package:connectivity/connectivity.dart';void main() => runApp(MaterialApp(title: "Wifi Check", home: MyPage()));class MyPage extends StatefulWidget { @override _MyPageState createState() => _MyPageState();}class _MyPageState extends State<MyPage> { bool _tryAgain = false; @override void initState() { super.initState(); _checkWifi(); } _checkWifi() async { // the method below returns a Future var connectivityResult = await (new Connectivity().checkConnectivity()); bool connectedToWifi = (connectivityResult == ConnectivityResult.wifi); if (!connectedToWifi) { _showalert(context); } if (_tryAgain != !connectedToWifi) { setState(() => _tryAgain = !connectedToWifi); } } @override Widget build(BuildContext context) { var body = Container( alignment: Alignment.center, child: _tryAgain ? RaisedButton( child: Text("Try again"), onPressed: () { _checkWifi(); }) : Text("This device is connected to Wifi"), ); return Scaffold( appBar: AppBar(title: Text("Wifi check")), body: body ); } void _showalert(BuildContext context) { showDialog( context: context, builder: (context) => alertDialog( title: Text("Wifi"), content: Text("Wifi not detected. Please activate it."), ) ); }}


