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

时间:2020-06-07 08:38:05

标签: android flutter networking dio

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

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

我只是尝试发送ping并以这种方式检查它,但是当我这样做时,似乎要花费很长时间才能停止并返回ping失败。

我还使用DIO库访问API,因此我也尝试通过该库检测它,但停止和返回它也需要花费一些时间(大约30秒)。在这种情况下,我想我只是超时了,但这也不是我想要的。

有什么想法或更好的方法来检测是否有活动的Internet连接以一种较快的方式而不是网络状态进行检测?

2 个答案:

答案 0 :(得分:1)

看看连通性包装 Connectivity Package

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

答案 1 :(得分:0)

对于任何正在寻找类似解决方案的人,我认为我都会使用它。

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

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