TF-228 Checking network status in the app
This commit is contained in:
@@ -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)),
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user