有没有办法检测 flutter 是否可以访问互联网?

Is there a way to detect if flutter has access to internet?

我一直在寻找一种方法来检测我的 Flutter 应用程序是否可以访问互联网。我想用它让应用程序选择是将一些数据发送到 API,如果有互联网,或者将它保存到本地数据库,如果没有互联网。

我已经尝试了一些插件,但它们似乎都检测网络状态,而不是检查是否有互联网连接。

我试过只是简单地发送一个 ping 并以这种方式检查它,但是当我这样做时,似乎需要很长时间才能停止并且 return ping 失败。

我也在使用 DIO 库访问 API 所以我也尝试通过该库检测它但是它也需要相当长的时间才能停止并且 return (大约 30 秒) .在这种情况下,我想我只是遇到了超时,但这也不是我真正想要的。

有什么想法或更好的方法可以快速检测是否存在活动的互联网连接而不是网络状态?

查看连接包 Connectivity Package

如果包裹不满足您的要求,那么也许您可以在后台尝试使用 http 连接到任何 website/API 并检查状态

对于任何在此处寻找类似解决方案的人,我认为我将使用它。

Dio 库有一个 http 超时选项,它似乎工作得很好,我试图使用 Future 超时,但没有考虑是否能够建立 http 连接。

这里是 Dio 文档中的示例

Dio dio = new Dio(); // with default Options

// Set default configs
dio.options.connectTimeout = 5000; //5s
dio.options.receiveTimeout = 3000;

// or new Dio with a BaseOptions instance.
BaseOptions options = new BaseOptions(
    connectTimeout: 5000,
    receiveTimeout: 3000,
);
Dio dio = new Dio(options);

感谢您的帮助。希望我能按照我想要的方式工作。