**已解决** 在 dart、flutter 应用程序中检查或连续收听互联网连接/网络连接
Posted
技术标签:
【中文标题】**已解决** 在 dart、flutter 应用程序中检查或连续收听互联网连接/网络连接【英文标题】:**SOLVED** Check or listen continuously to internet connection/Network Connectivity in dart, flutter app 【发布时间】:2021-10-18 05:17:03 【问题描述】:我一直在寻找很久才能知道在颤振/飞镖应用程序中收听互联网连接的最佳方法。我认为这种方法现在更好,它可以帮助像我这样一直在寻找的人。我使用了许多连接插件,但都不起作用。我同样使用了许多人建议的 data_connection_checker、lookUpAddress 等,但无济于事。但下面有帮助。 使用以下插件检查或收听 dart、flutter 应用中的 Internet 连接/网络连接。
connectivity_plus
internet_connection_checker
import 'dart:async';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:internet_connection_checker/internet_connection_checker.dart';
class ConnectionUtil
static final ConnectionUtil _singleton = new ConnectionUtil._internal();
ConnectionUtil._internal();
static ConnectionUtil getInstance() => _singleton;
bool hasConnection = false;
StreamController connectionChangeController = StreamController();
final Connectivity _connectivity = Connectivity();
void initialize()
_connectivity.onConnectivityChanged.listen(_connectionChange);
void _connectionChange(ConnectivityResult result)
_hasInternetInternetConnection();
Stream get connectionChange => connectionChangeController.stream;
Future<bool> _hasInternetInternetConnection() async
bool previousConnection = hasConnection;
var connectivityResult = await (Connectivity().checkConnectivity());
if (connectivityResult == ConnectivityResult.mobile || connectivityResult == ConnectivityResult.wifi)
// this is the different
if (await InternetConnectionChecker().hasConnection)
hasConnection = true;
else
hasConnection = false;
else
hasConnection = false;
if (previousConnection != hasConnection)
connectionChangeController.add(hasConnection);
return hasConnection;
在有状态小部件上实现此代码.....
bool hasInterNetConnection = false;
@override
initState()
ConnectionUtil connectionStatus = ConnectionUtil.getInstance();
connectionStatus.initialize();
connectionStatus.connectionChange.listen(connectionChanged);
super.initState();
void connectionChanged(dynamic hasConnection)
setState(()
hasInterNetConnection = hasConnection;
);
祝你好运
【问题讨论】:
【参考方案1】:几周前我遇到了类似的问题。这是一个很好的方法。 internet_connection_checker
插件允许解决connectivity_plus
插件无法解决的网络层问题。我已经使用bloc
库实现了这两个插件。有关更多信息和代码,请参阅this *** 帖子和this Github 问题。
【讨论】:
【参考方案2】:我在使用 data_connection_checker 时遇到了同样的问题,它工作正常,但它已迁移到 null 安全,所以我改为使用提供商的 Internet 连接检查器来检查整个应用程序是否已连接,但 Steam 提供商是给我错误'需要初始数据'如何解决这个问题
【讨论】:
你应该创建自己的问题以上是关于**已解决** 在 dart、flutter 应用程序中检查或连续收听互联网连接/网络连接的主要内容,如果未能解决你的问题,请参考以下文章
Flutter 移动应用程序中的 Python 和 Dart 集成