Newer
Older
import 'package:easy_localization/easy_localization.dart';
import '../../data/models/app_cubit.dart';
import '../../data/models/app_state.dart';
import '../widgets/fifth_screen/text_divider.dart';
class FifthScreen extends StatelessWidget {
const FifthScreen({super.key});
@override
Widget build(BuildContext context) {
builder: (BuildContext context, AppState state) => Scaffold(
appBar: AppBar(title: Text(tr('bottom_nav_fifth'))),
drawer: const CardDrawer(),
body: ListView(
padding: const EdgeInsets.symmetric(horizontal: 16),
physics: const BouncingScrollPhysics(),
children: <Widget>[
const SizedBox(height: 10),
DropdownButtonFormField<Locale>(
value: context.locale,
decoration: InputDecoration(
labelText: tr('language_switch_title'),
icon: const Icon(Icons.language),
border: const OutlineInputBorder(),
),
onChanged: (Locale? newLocale) {
context.setLocale(newLocale!);
},
items: const <DropdownMenuItem<Locale>>[
DropdownMenuItem<Locale>(
value: Locale('ca'),
child: Text('Català'),
),
DropdownMenuItem<Locale>(
value: Locale('de'),
child: Text('Deutsch'),
),
DropdownMenuItem<Locale>(
value: Locale('en'),
child: Text('English'),
),
DropdownMenuItem<Locale>(
value: Locale('es'),
child: Text('Español'),
),
DropdownMenuItem<Locale>(
value: Locale('fr'),
child: Text('Français'),
),
DropdownMenuItem<Locale>(
value: Locale('gl'),
child: Text('Galego'),
),
DropdownMenuItem<Locale>(
value: Locale('nl'),
child: Text('Nederlands'),
),
DropdownMenuItem<Locale>(
value: Locale('pt'),
child: Text('Português'),
),
GridView.count(
physics: const NeverScrollableScrollPhysics(),
crossAxisCount: 2,
childAspectRatio: 2 / 1.15,
crossAxisSpacing: 8,
mainAxisSpacing: 8,
shrinkWrap: true,
padding: EdgeInsets.zero,
children: <GridItem>[
if (showShare())
GridItem(
title: 'share_your_key',
icon: Icons.share,
onTap: () => Share.share(
SharedPreferencesHelper().getPubKey())),
GridItem(
title: 'copy_your_key',
icon: Icons.copy,
onTap: () => copyPublicKeyToClipboard(context),
if (PWAInstall().installPromptEnabled)
GridItem(
title: 'install_desktop',
icon: Icons.install_desktop,
onTap: () {
try {
PWAInstall().promptInstall_();
} catch (e) {
final String error = e.toString();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(tr(
'error_installing_desktop',
namedArgs: <String, String>{
'error': error
})),
),
);
}
},
),
GridItem(
title: 'export_key',
icon: Icons.download,
onTap: () {
showDialog(
context: context,
builder: (BuildContext context) {
return const ExportDialog();
},
);
}),
GridItem(
title: 'import_key',
icon: Icons.upload,
onTap: () {
showDialog(
context: context,
builder: (BuildContext context) {
return const ImportDialog();
},
);
}),
]),
if (state.expertMode)
const TextDivider(text: 'technical_info_title'),
if (state.expertMode)
const NodeInfoCard(type: NodeType.duniter),
if (state.expertMode)
const NodeInfoCard(type: NodeType.cesiumPlus),
if (state.expertMode)
const NodeInfoCard(type: NodeType.gva),
if (state.expertMode)
LinkCard(
title: 'code_card_title',
icon: Icons.code_rounded,
url:
value: state.expertMode,
onChanged: (bool value) =>
context.read<AppCubit>().setExpertMode(value),
),
const BottomWidget()
]),
));