Определить наличие интернета на устройстве (Flutter)

Ищу простое и стабильное решение для определения наличия подключения к интернету на устройстве:

internet()
{
  if () {return true;}
  else {return false;}
}

onPressed: ()
{
  if (internet() == true) {}
}

пробовал так, но что-то криво работает:

  internet() async {
    final response = await http.get('https://paybot.top/test.json');
    if (response.statusCode != 200) {
      return false;
    } else {
      return true;
    }
  }

Ответы (1 шт):

Автор решения: MiT
import 'dart:io';

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

Future<bool> internet() async {
  try {
    final result = await InternetAddress.lookup('google.com');
    if (result.isNotEmpty && result[0].rawAddress.isNotEmpty) {
      return true;
    }
  } on SocketException catch (_) {
    return false;
  }
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  bool internetStatus;

  @override
  void initState() async {
    internetStatus = await internet();
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        body: Center(
          child: RaisedButton(
              child: Text("1"),
              onPressed: () {
                if (internetStatus == true) {}
              }),
        ),
      ),
    );
  }
}
→ Ссылка