TF-228 Checking network status in the app

This commit is contained in:
dab246
2022-03-31 12:09:05 +07:00
committed by Dat H. Pham
parent ac52289891
commit 431ecd44ed
11 changed files with 125 additions and 25 deletions
+10
View File
@@ -1,9 +1,11 @@
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:core/core.dart';
import 'package:dartz/dartz.dart';
import 'package:get/get.dart';
abstract class BaseController extends GetxController {
final viewState = Rx<Either<Failure, Success>>(Right(UIState.idle));
final connectivityResult = Rxn<ConnectivityResult>();
void consumeState(Stream<Either<Failure, Success>> newStateStream) async {
log('BaseController::consumeState():');
@@ -18,6 +20,14 @@ abstract class BaseController extends GetxController {
viewState.value = newState;
}
void setNetworkConnectivityState(ConnectivityResult newConnectivityResult) {
connectivityResult.value = newConnectivityResult;
}
bool isNetworkConnectionAvailable() {
return connectivityResult.value != ConnectivityResult.none;
}
void getState(Future<Either<Failure, Success>> newStateStream) async {
final state = await newStateStream;
state.fold(
@@ -0,0 +1,33 @@
import 'package:core/core.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
mixin NetworkConnectionMixin {
final _imagePaths = Get.find<ImagePaths>();
Widget buildNetworkConnectionWidget(BuildContext context) {
return Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(16)),
width: 320,
margin: EdgeInsets.only(bottom: 100),
child: Material(
elevation: 8,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(16.0)),
),
child: ListTile(
leading: SvgPicture.asset(_imagePaths.icNotConnection),
title: Text(
AppLocalizations.of(context).no_internet_connection,
style: TextStyle(fontSize: 15, color: Colors.black)),
)
)
);
}
}