Improved snackbars

This commit is contained in:
Juan Gilsanz Polo
2024-02-27 01:46:12 +01:00
parent 16d05880c9
commit 8a968be6e0
29 changed files with 588 additions and 627 deletions

View File

@@ -3,8 +3,9 @@ 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/utils/snackbar.dart';
import 'package:linkdy/i18n/strings.g.dart';
import 'package:linkdy/constants/global_keys.dart';
import 'package:linkdy/providers/server_instances.provider.dart';
import 'package:linkdy/router/routes.dart';
import 'package:linkdy/router/paths.dart';
@@ -23,7 +24,7 @@ InterceptorsWrapper dioInterceptor(DioInterceptorRef ref) {
GoRouter.of(rootNavigatorKey.currentContext!).pushReplacement(RoutesPaths.onboarding);
ref.read(apiClientProvider.notifier).disconnectApiClient();
ref.read(serverInstancesProvider.notifier).removeServerInstances();
ref.read(snackbarProvider.notifier).showSnacbkar(label: t.generic.authTokenNotValid, color: Colors.red);
showSnackbar(key: ScaffoldMessengerKeys.root, 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'15186eb74bde12048a96b1d38f1c9308c9f435a8';
String _$dioInterceptorHash() => r'16ba03ce5f4547c91566a38f348cf85df73fbfca';
/// See also [dioInterceptor].
@ProviderFor(dioInterceptor)

View File

@@ -1,42 +0,0 @@
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

@@ -1,25 +0,0 @@
// 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