Skip to content
Snippets Groups Projects
fifth_screen.dart 3.45 KiB
Newer Older
vjrj's avatar
vjrj committed
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/node.dart';
vjrj's avatar
vjrj committed
import '../../data/models/node_list_cubit.dart';
import '../../data/models/node_list_state.dart';
vjrj's avatar
vjrj committed
import '../../g1/api.dart';
vjrj's avatar
vjrj committed
import '../../g1/export_import.dart';
import '../ui_helpers.dart';
vjrj's avatar
vjrj committed
import '../widgets/bottom_widget.dart';
vjrj's avatar
vjrj committed
import '../widgets/fifth_screen/grid_item.dart';
import '../widgets/fifth_screen/info_card.dart';
import '../widgets/fifth_screen/link_card.dart';
import '../widgets/fifth_screen/text_divider.dart';
import '../widgets/header.dart';

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

  @override
  Widget build(BuildContext context) {
vjrj's avatar
vjrj committed
    return BlocBuilder<NodeListCubit, NodeListState>(
        builder: (BuildContext context, NodeListState state) {
vjrj's avatar
vjrj committed
      final NodeListCubit nodeListCubit = context.read<NodeListCubit>();
      final List<Node> duniterNodes = nodeListCubit.duniterNodes;
vjrj's avatar
vjrj committed
      return Material(
        color: Theme.of(context).colorScheme.background,
        child: ListView(
            padding: const EdgeInsets.symmetric(horizontal: 16),
            physics: const BouncingScrollPhysics(),
            children: <Widget>[
              const Header(text: 'bottom_nav_fifth'),
vjrj's avatar
vjrj committed
              GestureDetector(
                  onLongPress: () {
                    fetchDuniterNodes(state, nodeListCubit, force: true);
                  },
                  child: InfoCard(
                      title: 'connected_to',
                      subtitle: duniterNodes.first.url.replaceFirst(':443', ''),
                      trailing: tr('current_nodes_length',
                          namedArgs: <String, String>{
                            'nodes': duniterNodes.length.toString()
                          }),
                      icon: Icons.hub)),
vjrj's avatar
vjrj committed
              LinkCard(
                  title: 'code_card_title',
                  icon: Icons.code_rounded,
                  url: Uri.parse('https://git.duniter.org/vjrj/ginkgo')),
              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>[
                    GridItem(
vjrj's avatar
vjrj committed
                        title: 'export_key',
vjrj's avatar
vjrj committed
                        icon: Icons.download,
                        onTap: () {
                          showDialog(
                            context: context,
                            builder: (BuildContext context) {
                              return const ExportImportPage();
                            },
                          );
                        }),
                    GridItem(
vjrj's avatar
vjrj committed
                        title: 'import_key',
vjrj's avatar
vjrj committed
                        icon: Icons.upload,
                        onTap: () {
                          const ExportImportPage();
                        }),
                    GridItem(
vjrj's avatar
vjrj committed
                      title: 'copy_your_key',
vjrj's avatar
vjrj committed
                      icon: Icons.copy,
                      onTap: () => copyPublicKeyToClipboard(context),
                    )
                  ]),
vjrj's avatar
vjrj committed
              const BottomWidget()
vjrj's avatar
vjrj committed
            ]),
      );
    });
vjrj's avatar
vjrj committed
  }
}