**已解决** 在 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,Dart 版本仍然相同

如何在 Flutter Dart 中实现插件架构

Flutter 移动应用程序中的 Python 和 Dart 集成

Flutter(Dart)如何在点击应用程序时将副本添加到剪贴板?

在 Flutter SDK 中找不到 Dart

错误 Dart/Flutter: 'context != null': 不正确