Skip to content
Snippets Groups Projects
fifth_screen.dart 4.2 KiB
Newer Older
import 'package:easy_localization/easy_localization.dart';
vjrj's avatar
vjrj committed
import 'package:flutter/material.dart';
vjrj's avatar
vjrj committed
import 'package:flutter_bloc/flutter_bloc.dart';
vjrj's avatar
vjrj committed

vjrj's avatar
vjrj committed
import '../../data/models/app_cubit.dart';
import '../../data/models/app_state.dart';
vjrj's avatar
vjrj committed
import '../../data/models/node_type.dart';
vjrj's avatar
vjrj committed
import '../ui_helpers.dart';
vjrj's avatar
vjrj committed
import '../widgets/bottom_widget.dart';
vjrj's avatar
vjrj committed
import '../widgets/card_drawer.dart';
vjrj's avatar
vjrj committed
import '../widgets/fifth_screen/export_dialog.dart';
vjrj's avatar
vjrj committed
import '../widgets/fifth_screen/grid_item.dart';
vjrj's avatar
vjrj committed
import '../widgets/fifth_screen/import_dialog.dart';
vjrj's avatar
vjrj committed
import '../widgets/fifth_screen/link_card.dart';
vjrj's avatar
vjrj committed
import '../widgets/fifth_screen/node_info.dart';
vjrj's avatar
vjrj committed
import '../widgets/fifth_screen/text_divider.dart';

class FifthScreen extends StatelessWidget {
  const FifthScreen({super.key});

  @override
  Widget build(BuildContext context) {
vjrj's avatar
vjrj committed
    return BlocBuilder<AppCubit, AppState>(
vjrj's avatar
vjrj committed
        builder: (BuildContext context, AppState state) => Scaffold(
              appBar: AppBar(title: Text(tr('bottom_nav_fifth'))),
              drawer: const CardDrawer(),
              body: ListView(
vjrj's avatar
vjrj committed
                  padding: const EdgeInsets.symmetric(horizontal: 16),
                  physics: const BouncingScrollPhysics(),
                  children: <Widget>[
                    const TextDivider(text: 'key_tools_title'),
                    GridView.count(
                        physics: const NeverScrollableScrollPhysics(),
                        crossAxisCount: 2,
                        childAspectRatio: 2 / 1.15,
                        crossAxisSpacing: 8,
                        mainAxisSpacing: 8,
                        shrinkWrap: true,
                        padding: EdgeInsets.zero,
                        children: <GridItem>[
                          if (state.expertMode)
                            GridItem(
                                title: 'export_key',
                                icon: Icons.download,
                                onTap: () {
                                  showDialog(
                                    context: context,
                                    builder: (BuildContext context) {
                                      return const ExportDialog();
                                    },
                                  );
                                }),
                          if (state.expertMode)
                            GridItem(
                                title: 'import_key',
                                icon: Icons.upload,
                                onTap: () {
                                  showDialog(
                                    context: context,
                                    builder: (BuildContext context) {
vjrj's avatar
vjrj committed
                                      return const ImportDialog();
vjrj's avatar
vjrj committed
                                    },
                                  );
                                }),
                          GridItem(
                            title: 'copy_your_key',
                            icon: Icons.copy,
                            onTap: () => copyPublicKeyToClipboard(context),
                          )
                        ]),
                    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),
vjrj's avatar
vjrj committed
                    if (state.expertMode)
                      const NodeInfoCard(type: NodeType.gva),
vjrj's avatar
vjrj committed
                    if (state.expertMode)
                      LinkCard(
                          title: 'code_card_title',
                          icon: Icons.code_rounded,
                          url:
                              Uri.parse('https://git.duniter.org/vjrj/ginkgo')),
                    const BottomWidget(),
                    SwitchListTile(
                      title: Text(tr('expert_mode')),
vjrj's avatar
vjrj committed
                      value: state.expertMode,
                      onChanged: (bool value) =>
                          context.read<AppCubit>().setExpertMode(value),
                    ),
                    const BottomWidget()
                  ]),
            ));
vjrj's avatar
vjrj committed
  }
vjrj's avatar
vjrj committed
}