【问题标题】:Check an internet connection available on Flutter app检查 Flutter 应用程序上可用的互联网连接
【发布时间】:2022-11-07 18:56:05
【问题描述】:

我正在寻找一种从我的颤振应用程序检查互联网连接的方法。 我尝试遵循以下流程。

  1. 使用查找final result = await InternetAddress.lookup('example.com') 并检查result.isNotEmpty && result[0].rawAdress.isNotEmpty

  2. 使用 internet_connection_checker 插件final result = await InternetConnectionChecker().hasConnection

    我的测试设备(真实设备)连接到wifi,但需要登录才能使用它(但当时没有登录)。即使应用程序无法使用互联网,结果似乎也总是返回 true。

    附加信息

    当我尝试通过设备浏览器中的地址(1.1.1.1、google.com、example.com 等)使用 Internet 时,它总是重定向到登录页面。我认为这可能是为什么互联网状态检查总是返回 true 的问题。

    有谁知道我可能做错了什么?或者我必须做什么才能得到我想要的?

    谢谢

【问题讨论】:

    标签: flutter dart mobile flutter-dependencies internet-connection


    【解决方案1】:

    您可以将https://pub.dev/packages/connectivity_plus 库用于您的项目并检查您的互联网连接

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    【解决方案2】:
    import 'package:flutter/cupertino.dart';
    import 'package:flutter/material.dart';
    import 'package:connectivity/connectivity.dart';
    import 'package:fluttertoast/fluttertoast.dart';
    import 'dart:async';
    // import 'dart:io';
    
    void main() => runApp(MyApp());
    
    class MyApp extends StatelessWidget {
      // This widget is the root of your application.
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          debugShowCheckedModeBanner: false,
          home: HomePage(),
        );
      }
    }
    
    class HomePage extends StatefulWidget {
      @override
      _HomePageState createState() => _HomePageState();
    }
    
    class _HomePageState extends State<HomePage> {
      ////////////////// CHECK CONNECTIVITY CONTINUOUSLY ///////////////////////
      // Define Variables
      StreamSubscription connectivitySubscription;
      ConnectivityResult previousresult;
      @override
      void initState() {
        super.initState();
        connectivitySubscription = Connectivity()
            .onConnectivityChanged
            .listen((ConnectivityResult nowresult) {
          if (nowresult == ConnectivityResult.none) {
            // print('Not Connected');
            //TODO Flutter Toaster for None
            Fluttertoast.showToast(
              msg: "Network Connection Error",
              backgroundColor: Colors.black,
              textColor: Colors.white,
              fontSize: 16.0,
            );
          }
          // when mobile and wifi network connected
          else if (previousresult == ConnectivityResult.none) {
            // print('Connected');
            if (nowresult == ConnectivityResult.mobile) {
              // print('Mobile Network Connected');
              //TODO Flutter Toaster for Mobile
              Fluttertoast.showToast(
                msg: "Mobile Network Connected",
                backgroundColor: Colors.black,
                textColor: Colors.white,
                fontSize: 16.0,
              );
            } else if (nowresult == ConnectivityResult.wifi) {
              // print('WiFi Network Connected');
              //TODO Flutter Toaster for WiFi
              Fluttertoast.showToast(
                msg: "WiFi Network Connected",
                backgroundColor: Colors.black,
                textColor: Colors.white,
                fontSize: 16.0,
              );
            }
          }
          previousresult = nowresult;
        });
      }
    
      @override
      void dispose() {
        super.dispose();
        connectivitySubscription.cancel();
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          backgroundColor: Colors.cyan,
          body: Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                Text(
                  'Connectivity Status',
                  style: TextStyle(
                    fontSize: 25.0,
                  ),
                ),
              ],
            ),
          ),
        );
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-01
      • 1970-01-01
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-18
      相关资源
      最近更新 更多