improved snackbars
This commit is contained in:
@@ -27,6 +27,8 @@ import 'package:lensai/features/geckoview/features/tabs/features/chat/presentati
|
|||||||
import 'package:lensai/utils/ui_helper.dart' as ui_helper;
|
import 'package:lensai/utils/ui_helper.dart' as ui_helper;
|
||||||
|
|
||||||
class BrowserScreen extends HookConsumerWidget {
|
class BrowserScreen extends HookConsumerWidget {
|
||||||
|
Duration get _backButtonPressTimeout => const Duration(seconds: 2);
|
||||||
|
|
||||||
const BrowserScreen({super.key});
|
const BrowserScreen({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -189,7 +191,7 @@ class BrowserScreen extends HookConsumerWidget {
|
|||||||
DateTime.now().difference(
|
DateTime.now().difference(
|
||||||
lastBackButtonPress.value!,
|
lastBackButtonPress.value!,
|
||||||
) <
|
) <
|
||||||
const Duration(seconds: 2)) {
|
_backButtonPressTimeout) {
|
||||||
lastBackButtonPress.value = null;
|
lastBackButtonPress.value = null;
|
||||||
|
|
||||||
if (tabState != null && tabCount > 1) {
|
if (tabState != null && tabCount > 1) {
|
||||||
@@ -203,7 +205,11 @@ class BrowserScreen extends HookConsumerWidget {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
lastBackButtonPress.value = DateTime.now();
|
lastBackButtonPress.value = DateTime.now();
|
||||||
ui_helper.showTabBackButtonMessage(context, tabCount);
|
ui_helper.showTabBackButtonMessage(
|
||||||
|
context,
|
||||||
|
tabCount,
|
||||||
|
_backButtonPressTimeout,
|
||||||
|
);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
+8
@@ -26,6 +26,7 @@ import 'package:lensai/features/user/domain/services/local_authentication.dart';
|
|||||||
import 'package:lensai/features/web_feed/domain/providers/add_dialog_blocking.dart';
|
import 'package:lensai/features/web_feed/domain/providers/add_dialog_blocking.dart';
|
||||||
import 'package:lensai/features/web_feed/domain/services/article_content_processor.dart';
|
import 'package:lensai/features/web_feed/domain/services/article_content_processor.dart';
|
||||||
import 'package:lensai/presentation/hooks/on_initialization.dart';
|
import 'package:lensai/presentation/hooks/on_initialization.dart';
|
||||||
|
import 'package:lensai/utils/ui_helper.dart';
|
||||||
|
|
||||||
class BrowserView extends StatefulHookConsumerWidget {
|
class BrowserView extends StatefulHookConsumerWidget {
|
||||||
final Duration screenshotPeriod;
|
final Duration screenshotPeriod;
|
||||||
@@ -203,6 +204,13 @@ class _BrowserViewState extends ConsumerState<BrowserView>
|
|||||||
);
|
);
|
||||||
_timerPaused = false;
|
_timerPaused = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
showSuggestNewTabMessage(
|
||||||
|
context,
|
||||||
|
onAdd: () async {
|
||||||
|
await const SearchRoute().push(context);
|
||||||
|
},
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,12 +14,17 @@ void showErrorMessage(BuildContext context, String message) {
|
|||||||
ScaffoldMessenger.of(context).showSnackBar(snackBar);
|
ScaffoldMessenger.of(context).showSnackBar(snackBar);
|
||||||
}
|
}
|
||||||
|
|
||||||
void showTabBackButtonMessage(BuildContext context, int tabCount) {
|
void showTabBackButtonMessage(
|
||||||
|
BuildContext context,
|
||||||
|
int tabCount,
|
||||||
|
Duration duration,
|
||||||
|
) {
|
||||||
final snackbar = SnackBar(
|
final snackbar = SnackBar(
|
||||||
content:
|
content:
|
||||||
(tabCount > 1)
|
(tabCount > 1)
|
||||||
? const Text('Please click BACK again to close current tab')
|
? const Text('Navigate BACK again to close current tab')
|
||||||
: const Text('Please click BACK again to exit app'),
|
: const Text('Navigate BACK again to exit app'),
|
||||||
|
duration: duration,
|
||||||
);
|
);
|
||||||
|
|
||||||
ScaffoldMessenger.of(context)
|
ScaffoldMessenger.of(context)
|
||||||
@@ -47,6 +52,20 @@ void showTabOpenedMessage(
|
|||||||
ScaffoldMessenger.of(context).showSnackBar(snackBar);
|
ScaffoldMessenger.of(context).showSnackBar(snackBar);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void showSuggestNewTabMessage(
|
||||||
|
BuildContext context, {
|
||||||
|
required void Function() onAdd,
|
||||||
|
Duration duration = const Duration(seconds: 2),
|
||||||
|
}) {
|
||||||
|
final snackBar = SnackBar(
|
||||||
|
content: const Text('Want to open a new tab?'),
|
||||||
|
action: SnackBarAction(label: 'New Tab', onPressed: onAdd),
|
||||||
|
duration: duration,
|
||||||
|
);
|
||||||
|
|
||||||
|
ScaffoldMessenger.of(context).showSnackBar(snackBar);
|
||||||
|
}
|
||||||
|
|
||||||
void showTabSwitchMessage(
|
void showTabSwitchMessage(
|
||||||
BuildContext context, {
|
BuildContext context, {
|
||||||
String? tabName,
|
String? tabName,
|
||||||
|
|||||||
Reference in New Issue
Block a user