Rise fabs when snackbar is shown

This commit is contained in:
Juan Gilsanz Polo
2024-02-26 11:15:38 +01:00
parent e127f00762
commit 8785334c25
23 changed files with 371 additions and 264 deletions

View File

@@ -6,7 +6,7 @@ import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:linkdy/providers/shared_preferences.provider.dart';
import 'package:linkdy/constants/enums.dart';
import 'package:linkdy/models/app_status.dart';
import 'package:linkdy/models/providers_models/app_status.model.dart';
part 'app_status.provider.g.dart';

View File

@@ -3,10 +3,10 @@ import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:linkdy/providers/snackbar.provider.dart';
import 'package:linkdy/i18n/strings.g.dart';
import 'package:linkdy/providers/server_instances.provider.dart';
import 'package:linkdy/router/routes.dart';
import 'package:linkdy/utils/snackbar.dart';
import 'package:linkdy/router/paths.dart';
import 'package:linkdy/providers/api_client.provider.dart';
@@ -23,7 +23,7 @@ InterceptorsWrapper dioInterceptor(DioInterceptorRef ref) {
GoRouter.of(rootNavigatorKey.currentContext!).pushReplacement(RoutesPaths.onboarding);
ref.read(apiClientProvider.notifier).disconnectApiClient();
ref.read(serverInstancesProvider.notifier).removeServerInstances();
showSnacbkar(label: t.generic.authTokenNotValid, color: Colors.red);
ref.read(snackbarProvider.notifier).showSnacbkar(label: t.generic.authTokenNotValid, color: Colors.red);
}
handler.next(error);
},

View File

@@ -6,7 +6,7 @@ part of 'dio_interceptor.provider.dart';
// RiverpodGenerator
// **************************************************************************
String _$dioInterceptorHash() => r'449d19df5bf143a7e0f92249d99b4d223b2468f3';
String _$dioInterceptorHash() => r'15186eb74bde12048a96b1d38f1c9308c9f435a8';
/// See also [dioInterceptor].
@ProviderFor(dioInterceptor)

View File

@@ -0,0 +1,42 @@
import 'package:flutter/material.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:linkdy/constants/global_keys.dart';
import 'package:linkdy/models/providers_models/snackbar_status.model.dart';
part 'snackbar.provider.g.dart';
@Riverpod(keepAlive: true)
class Snackbar extends _$Snackbar {
@override
SnackbarStatusModel build() {
return SnackbarStatusModel();
}
void showSnacbkar({
required String label,
required Color color,
Color? labelColor,
GlobalKey<ScaffoldMessengerState>? key,
}) async {
final GlobalKey<ScaffoldMessengerState> scaffoldKey = key ?? scaffoldMessengerGlobalKey;
if (state.visible == true) {
scaffoldKey.currentState?.clearSnackBars();
await Future.delayed(const Duration(milliseconds: 500));
}
state.visible = true;
ref.notifyListeners();
final snackBar = SnackBar(
content: Text(
label,
style: TextStyle(color: labelColor ?? Colors.white),
),
backgroundColor: color,
);
scaffoldKey.currentState?.showSnackBar(snackBar).closed.then((value) {
state.visible = false;
ref.notifyListeners();
});
}
}

View File

@@ -0,0 +1,25 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'snackbar.provider.dart';
// **************************************************************************
// RiverpodGenerator
// **************************************************************************
String _$snackbarHash() => r'2522a7ebc0bdd891cea5cb342bd1ff2419473a00';
/// See also [Snackbar].
@ProviderFor(Snackbar)
final snackbarProvider =
NotifierProvider<Snackbar, SnackbarStatusModel>.internal(
Snackbar.new,
name: r'snackbarProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product') ? null : _$snackbarHash,
dependencies: null,
allTransitiveDependencies: null,
);
typedef _$Snackbar = Notifier<SnackbarStatusModel>;
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member