feat: add remote pull and push
This commit is contained in:
@@ -15,6 +15,7 @@ import 'package:flutter_slidable/flutter_slidable.dart';
|
||||
import '../models/bar_tab.dart';
|
||||
import '../models/product.dart';
|
||||
import '../models/tab_item.dart';
|
||||
import '../models/remote_command.dart';
|
||||
import '../services/product_service.dart';
|
||||
import '../utils/app_updater.dart';
|
||||
import '../viewmodels/bar_screen_view_model.dart';
|
||||
@@ -38,6 +39,43 @@ class _BarScreenViewState extends State<BarScreenView> {
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
void didChangeDependencies() {
|
||||
super.didChangeDependencies();
|
||||
_checkRemoteEvent();
|
||||
}
|
||||
|
||||
@override
|
||||
void didUpdateWidget(covariant BarScreenView oldWidget) {
|
||||
super.didUpdateWidget(oldWidget);
|
||||
_checkRemoteEvent();
|
||||
}
|
||||
|
||||
void _checkRemoteEvent() {
|
||||
final viewModel = context.read<BarScreenViewModel>();
|
||||
final event = viewModel.lastRemoteEvent;
|
||||
if (event == null) return;
|
||||
|
||||
viewModel.clearRemoteEvent();
|
||||
|
||||
if (event.type == RemoteSyncEventType.tabClosedRemotely) {
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
if (!mounted) return;
|
||||
final l10n = AppLocalizations.of(context);
|
||||
final message = l10n.tabClosedRemotely(
|
||||
event.tabCustomerName ?? '',
|
||||
event.requestedBy ?? '',
|
||||
);
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(
|
||||
content: Text(message),
|
||||
behavior: SnackBarBehavior.floating,
|
||||
),
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final l10n = AppLocalizations.of(context);
|
||||
@@ -83,7 +121,7 @@ class _BarScreenViewState extends State<BarScreenView> {
|
||||
const SizedBox(width: 6),
|
||||
IconButton(
|
||||
tooltip: l10n.refresh,
|
||||
onPressed: () => viewModel.load(),
|
||||
onPressed: () => viewModel.loadAndSync(),
|
||||
icon: const Icon(Icons.refresh_rounded),
|
||||
),
|
||||
const SizedBox(width: 6),
|
||||
|
||||
Reference in New Issue
Block a user