import 'package:flutter/material.dart';
import 'package:seos_mobile_keys_plugin/seos_mobile_keys_plugin.dart';
import '../utils/locator.dart';
import '../common/extensions/scaffold_messenger_state_extension.dart';
import '../common/components/shimmer_loader/settings_shimmer_loader.dart';
class SettingsPage extends StatefulWidget {
const SettingsPage({super.key});
@override
State<StatefulWidget> createState() => _SettingPage();
}
class _SettingPage extends State<SettingsPage> {
final _seosMobileKeysPlugin = locator.get<SeosMobileKeysPlugin>();
bool _isUnregistering = false;
@override
Widget build(BuildContext context) => Scaffold(
appBar: AppBar(
title: const Text(
'Settings',
),
),
body: ListView(
children: _menuList(context),
),
);
List<Widget> _menuList(BuildContext context) => [
ListTile(
title: Text(
'Unregister device',
style: Theme.of(context).textTheme.titleMedium,
),
leading: const Icon(
Icons.logout_sharp,
),
trailing: _isUnregistering ? const SettingsShimmerLoader() : null,
onTap: _isUnregistering ? null : _unregister,
),
];
void _unregister() async {
if (!mounted) return;
setState(() {
_isUnregistering = true;
});
try {
await _seosMobileKeysPlugin.terminateEndpoint();
if (!mounted) return;
Navigator.pop(context);
} catch (e) {
ScaffoldMessenger.of(context).showActionSnackBar(
content: Text('Unable to unregister: ${e.toString()}'),
label: 'Retry',
onPressed: _unregister,
);
}
}
}