モバイルアプリを作るとき、
「今ネットに接続できているか?」
「Wi-Fi とモバイルデータの切り替えを検知したい」
といったニーズはよくあります。
そんなとき便利なのが internet_connection_checker_plus パッケージ。
シンプルに オンライン/オフライン判定 ができ、ストリームで監視も可能です。
インストール
pubspec.yaml
に追加します。
dependencies:
internet_connection_checker_plus: ^2.0.0 # 最新バージョンを確認してください
基本的な使い方
接続チェック(1回だけ)
import 'package:flutter/material.dart';
import 'package:internet_connection_checker_plus/internet_connection_checker_plus.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
final hasConnection = await InternetConnection().hasInternetAccess;
debugPrint("インターネット接続あり? $hasConnection");
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
home: Scaffold(
body: Center(child: Text("Internet Connection Checker Plus Demo")),
),
);
}
}
接続状態をリアルタイムで監視
import 'package:flutter/material.dart';
import 'package:internet_connection_checker_plus/internet_connection_checker_plus.dart';
class ConnectionStatusWidget extends StatefulWidget {
const ConnectionStatusWidget({super.key});
@override
State<ConnectionStatusWidget> createState() => _ConnectionStatusWidgetState();
}
class _ConnectionStatusWidgetState extends State<ConnectionStatusWidget> {
late final Stream<InternetStatus> _statusStream;
@override
void initState() {
super.initState();
_statusStream = InternetConnection().onStatusChange;
}
@override
Widget build(BuildContext context) {
return StreamBuilder<InternetStatus>(
stream: _statusStream,
builder: (context, snapshot) {
if (snapshot.data == InternetStatus.connected) {
return const Text("✅ オンライン", style: TextStyle(fontSize: 24));
} else if (snapshot.data == InternetStatus.disconnected) {
return const Text("❌ オフライン", style: TextStyle(fontSize: 24));
}
return const CircularProgressIndicator();
},
);
}
}
void main() {
runApp(const MaterialApp(
home: Scaffold(
body: Center(child: ConnectionStatusWidget()),
),
));
}
特徴
hasInternetAccess
→ 現在の接続状態を取得onStatusChange
→ 接続状態の変更をストリームで購読可能- モバイルデータと Wi-Fi 両方に対応
- ネットワークは繋がっていても「インターネット未接続」状態も検知
まとめ
internet_connection_checker_plus
を使えば、
「オンライン/オフラインを簡単に検知」 できます。
- チャットアプリで「接続中…」を表示
- ネットワークが切れたときにリトライダイアログを出す
- オフラインモード実装
といったシーンで活用できます。