From 0570147b3104eb329207ff374541d9d6797fe427 Mon Sep 17 00:00:00 2001 From: davidpkj Date: Sat, 11 Mar 2023 17:54:46 +0100 Subject: Updated code to dart analysis recommendations --- lib/views/file_info_subview.dart | 103 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 lib/views/file_info_subview.dart (limited to 'lib/views/file_info_subview.dart') diff --git a/lib/views/file_info_subview.dart b/lib/views/file_info_subview.dart new file mode 100644 index 0000000..b9cd881 --- /dev/null +++ b/lib/views/file_info_subview.dart @@ -0,0 +1,103 @@ +import 'dart:io'; + +import 'package:flutter/material.dart'; + +import 'package:kulinar_app/constants.dart'; +import 'package:kulinar_app/util/file_handler.dart'; +import 'package:kulinar_app/widgets/error_widgets.dart'; + +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; + +class FileInfoSubview extends StatefulWidget { + const FileInfoSubview({Key? key, required this.filePath}) : super(key: key); + + final String filePath; + + @override + FileInfoSubviewState createState() => FileInfoSubviewState(); +} + +class FileInfoSubviewState extends State { + @override + Widget build(BuildContext context) { + final File file = File(widget.filePath.split(":")[1]); + + return Scaffold( + appBar: AppBar(title: Text(AppLocalizations.of(context)!.category9)), + body: FutureBuilder( + future: FileHandler.deserializeFileInformation(file), + builder: (BuildContext context, AsyncSnapshot> snapshot) { + if (snapshot.connectionState != ConnectionState.done) return const CircularProgressIndicator(); + if (snapshot.hasError || !snapshot.hasData) return const UnknownError(); + + return _buildFileInfoTable(_getSortedSnapshotData(snapshot), file); + }, + ), + ); + } + + String _localizeInfoField(BuildContext context, String field) { + switch (field) { + case "type": + return AppLocalizations.of(context)!.infoField1; + case "version": + return AppLocalizations.of(context)!.infoField2; + case "size": + return AppLocalizations.of(context)!.infoField3; + case "entries": + return AppLocalizations.of(context)!.infoField4; + default: + return AppLocalizations.of(context)!.unknown; + } + } + + List _getSortedSnapshotData(AsyncSnapshot> snapshot) { + List children = []; + + snapshot.data!.forEach((key, value) { + children.add( + TableRow( + children: [ + Padding( + padding: const EdgeInsets.only(right: 4.0), + child: Text(_localizeInfoField(context, key), style: cTableKeyStyle, textAlign: TextAlign.right), + ), + Padding( + padding: const EdgeInsets.only(left: 4.0), + child: Text(value, style: cTableValueStyle), + ), + ], + ), + ); + }); + + return children; + } + + Widget _buildFileInfoTable(List children, File file) { + return Padding( + padding: const EdgeInsets.only(top: 16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Table( + columnWidths: const { + 0: FlexColumnWidth(), + 1: FlexColumnWidth(), + }, + children: children, + ), + Padding( + padding: const EdgeInsets.all(16.0), + child: ElevatedButton( + child: Text(AppLocalizations.of(context)!.option312, style: cOptionTextStyle.copyWith(color: cIconColor)), + onPressed: () { + FileHandler.deserializeFile(context, file); + }, + ), + ), + ], + ), + ); + } +} -- cgit v1.2.3