我一直在寻找一种方法来检测我的Flutter应用是否可以访问互联网。我想用它来让应用程序选择是将某些数据发送到API(如果有互联网),还是将其保存到本地数据库(如果没有互联网)。
我尝试了一些插件,但是它们似乎都检测到网络状态,而不是检查是否有Internet连接。
我只是尝试发送ping并以这种方式检查它,但是当我这样做时,似乎要花费很长时间才能停止并返回ping失败。
我还使用DIO库访问API,因此我也尝试通过该库检测它,但停止和返回它也需要花费一些时间(大约30秒)。在这种情况下,我想我只是超时了,但这也不是我想要的。
有什么想法或更好的方法来检测是否有活动的Internet连接以一种较快的方式而不是网络状态进行检测?
答案 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);
感谢您的帮助。希望我能按照我想要的方式工作。