use overlay buidler instead of instance

This commit is contained in:
Fabian Freund
2025-08-01 20:48:21 +02:00
parent 28a8588051
commit a3d0eadac3
5 changed files with 14 additions and 11 deletions
@@ -25,13 +25,13 @@ part 'overlay.g.dart';
@Riverpod()
class OverlayController extends _$OverlayController {
@override
Widget? build() {
WidgetBuilder? build() {
return null;
}
// ignore: use_setters_to_change_properties api decision
void show(Widget dialog) {
state = dialog;
void show(WidgetBuilder builder) {
state = builder;
}
void dismiss() {
@@ -6,12 +6,12 @@ part of 'overlay.dart';
// RiverpodGenerator
// **************************************************************************
String _$overlayControllerHash() => r'b6dc3ca17611c4efadc7e8248d493cd3c7061e01';
String _$overlayControllerHash() => r'7b7885e07ae557c14199b6942b5d6392592ab747';
/// See also [OverlayController].
@ProviderFor(OverlayController)
final overlayControllerProvider =
AutoDisposeNotifierProvider<OverlayController, Widget?>.internal(
AutoDisposeNotifierProvider<OverlayController, WidgetBuilder?>.internal(
OverlayController.new,
name: r'overlayControllerProvider',
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
@@ -21,6 +21,6 @@ final overlayControllerProvider =
allTransitiveDependencies: null,
);
typedef _$OverlayController = AutoDisposeNotifier<Widget?>;
typedef _$OverlayController = AutoDisposeNotifier<WidgetBuilder?>;
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
@@ -57,7 +57,7 @@ class BrowserScreen extends HookConsumerWidget {
final eventService = ref.watch(eventServiceProvider);
final displayedSheet = ref.watch(bottomSheetControllerProvider);
final displayedOverlay = ref.watch(overlayControllerProvider);
final overlayBuilder = ref.watch(overlayControllerProvider);
final lastBackButtonPress = useRef<DateTime?>(null);
@@ -130,7 +130,7 @@ class BrowserScreen extends HookConsumerWidget {
return OverlayPortal(
controller: overlayController,
overlayChildBuilder: (context) {
return displayedOverlay!;
return overlayBuilder!.call(context);
},
child: Listener(
onPointerDown: (displayedSheet != null)
@@ -161,7 +161,7 @@ class BrowserScreen extends HookConsumerWidget {
return true;
}
if (displayedOverlay != null) {
if (overlayBuilder != null) {
ref.read(overlayControllerProvider.notifier).dismiss();
return true;
}
@@ -51,7 +51,10 @@ class StartProxyController extends _$StartProxyController {
ref
.read(overlayControllerProvider.notifier)
.show(Positioned(top: 0, left: 0, child: TorNotification()));
.show(
(context) =>
Positioned(top: 0, left: 0, child: TorNotification()),
);
await connection;
}
@@ -7,7 +7,7 @@ part of 'start_tor_proxy.dart';
// **************************************************************************
String _$startProxyControllerHash() =>
r'b83cdc1b6d1c358a2042ff2b7cc2f19f82e5d5ed';
r'3e8b409f069f32b601b1c60acbe0a72694fd1cc2';
/// See also [StartProxyController].
@ProviderFor(StartProxyController)