import 'package:flutter/cupertino.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:info_tren/components/cupertino_listtile.dart'; import 'package:info_tren/models.dart'; import 'package:info_tren/pages/settings/setings_page.dart'; import 'package:info_tren/providers.dart'; class SettingsPageCupertino extends SettingsPageShared { const SettingsPageCupertino({super.key,}); Future singleChoice({required BuildContext context, required List choices, required String Function(T) labelBuilder, String? title}) async { return await showCupertinoModalPopup( context: context, builder: (context) { return CupertinoActionSheet( title: title != null ? Text(title) : null, actions: choices.map((c) => CupertinoActionSheetAction( onPressed: () { Navigator.of(context).pop(c); }, child: Text(labelBuilder(c)), )).toList(), cancelButton: CupertinoActionSheetAction( child: const Text('Anulare'), onPressed: () { Navigator.of(context).pop(); }, ), ); }, ); } @override Widget build(BuildContext context) { return CupertinoPageScaffold( navigationBar: CupertinoNavigationBar( previousPageTitle: 'Info Tren', middle: Text(pageTitle), ), child: Builder( builder: (context) { final mq = MediaQuery.of(context); return SingleChildScrollView( child: Column( children: [ SizedBox( height: mq.padding.top, ), Consumer( builder: (context, ref, _) { final currentUiDesign = ref.watch(uiDesignProvider); return CupertinoListTile( title: Text(appearanceTitle), trailing: Text(currentUiDesign.userInterfaceName), onTap: () async { final choice = await singleChoice( context: context, choices: UiDesign.values, labelBuilder: (UiDesign ud) => ud.userInterfaceName, title: appearanceTitle, ); if (choice != null) { ref.read(uiDesignProvider.notifier).set(choice); } }, ); }, ), ], ), ); }, ), ); } }