Определить наличие интернета на устройстве (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) {}
}),
),
),
);
}
}