ネットワーク接続にはdio
を使用し、Connectivity
から接続状態をチェックします。
そして、ここでネットワークの状態を確認します。
@override
Widget build(BuildContext context) {
bloc.checkConnectivity(Connectivity());
return StreamBuilder(
stream: bloc.getInitApp,
builder: (context, AsyncSnapshot<InitApp> initApp) {
if (initApp.hasData) {
return prepareMain(initApp.data);
} else {
return Center(
child: CircularProgressIndicator(),
);
}
});
}
checkConnectivity
メソッド:
checkConnectivity(Connectivity _connectivity) {
_connectivity.onConnectivityChanged.listen((ConnectivityResult result){
if (result == ConnectivityResult.mobile ||
result == ConnectivityResult.wifi) {
fetchInitApp();
}
});
}
しかし、最終的に、アプリはAndroid device but iOS(Device/Simulator)でこのエラーが発生します:
Error connecting to the service protocol: HttpException: , uri = http://127.0.0.1:1024/ws
Api
なしでConnectivity
を呼び出そうとしましたが、アプリは同じように動作しますが、データを取得するのはAndroidで、iOSにはまだ問題があります。
あまりにも、Dart http
パッケージ 。
編集1:2019年9月25日
This has nothing to do WiFi the code!
The problem is the system WiFi connection.
この問題に直面したとき、完全な解決策が提供されるまでこの一時的な解決策を使用してください。
IDE)でデバイスを再接続し、IDEを再起動してください。この後、動作します。
API 29の代わりにAndroid API 28を使用します。
それは私のために働いた。
flutter clean
コマンドを実行すると、以前のビルドが削除されます。次に、try flutter run
コマンドを実行します
Macからネットワークを共有している場合は、無効にします。それは私のために働いた。
同じ問題があります。それが起こるとき、私はiPhoneのプラグを抜く/接続し、それは働き始めます。