1

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

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

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

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

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

4

2 回答 2

1

看看连接包 连接包

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

于 2020-06-07T09:11:56.040 回答
1

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

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);

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

于 2020-06-08T00:32:47.637 回答