use texticonbutton for scan and export, use global bool to enable local json config

main
Julian Gegner 2023-03-06 15:54:13 +01:00
parent a99fed7fa2
commit 6d53158b64
4 changed files with 54 additions and 17 deletions

View File

@ -3,5 +3,8 @@ library app.globals;
import 'package:smoke_cess_app/mock/db_mock.dart'; import 'package:smoke_cess_app/mock/db_mock.dart';
import 'package:smoke_cess_app/services/database_service.dart'; import 'package:smoke_cess_app/services/database_service.dart';
DatabaseService databaseService = DatabaseMock(); DatabaseService databaseService = DatabaseMock();
// DatabaseService databaseService = DatabaseService.instance; // DatabaseService databaseService = DatabaseService.instance;
// set this to read settings from local json file instead of scanning a qr code
bool useLocalConfig = false;

View File

@ -4,8 +4,11 @@ import 'package:provider/provider.dart';
import 'package:smoke_cess_app/services/export_service.dart'; import 'package:smoke_cess_app/services/export_service.dart';
import 'package:smoke_cess_app/services/settings_service.dart'; import 'package:smoke_cess_app/services/settings_service.dart';
import 'package:smoke_cess_app/services/notification_service.dart'; import 'package:smoke_cess_app/services/notification_service.dart';
import 'package:smoke_cess_app/widgets/buttons/round_button_widget.dart';
import 'package:smoke_cess_app/widgets/buttons/text_icon_button.dart';
import 'package:smoke_cess_app/widgets/scanner.dart'; import 'package:smoke_cess_app/widgets/scanner.dart';
import '../providers/settings_provider.dart'; import '../providers/settings_provider.dart';
import '../globals.dart' as globals;
class ScannerPage extends StatelessWidget { class ScannerPage extends StatelessWidget {
const ScannerPage({super.key}); const ScannerPage({super.key});
@ -32,25 +35,26 @@ class ScannerPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
SettingsProvider settingsProvider = context.watch<SettingsProvider>();
return Center( return Center(
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
const MyScanner(), const MyScanner(),
const SizedBox(height: 30), const SizedBox(height: 30),
ElevatedButton( if (!settingsProvider.scanning)
style: ElevatedButton.styleFrom( TextIconButton(
textStyle: const TextStyle(fontSize: 20)), text: 'Export',
onPressed: () => loadJSON(context), onPressed: ExportService().exportData,
child: const Text('Read JSON'), iconData: Icons.upload),
), if (globals.useLocalConfig && !settingsProvider.scanning)
const SizedBox(height: 30), ElevatedButton(
ElevatedButton( style: ElevatedButton.styleFrom(
style: ElevatedButton.styleFrom( textStyle: const TextStyle(fontSize: 20)),
textStyle: const TextStyle(fontSize: 20)), onPressed: () => loadJSON(context),
onPressed: export, child: const Text('Read JSON'),
child: const Text('Export'), ),
)
], ],
)); ));
} }

View File

@ -0,0 +1,29 @@
import 'package:flutter/material.dart';
class TextIconButton extends StatelessWidget {
final String text;
final VoidCallback onPressed;
final IconData iconData;
const TextIconButton(
{super.key,
required this.text,
required this.onPressed,
required this.iconData});
@override
Widget build(BuildContext context) {
return SizedBox(
width: MediaQuery.of(context).size.width * 0.4,
child: FloatingActionButton.extended(
label: Text(text),
backgroundColor: Theme.of(context).colorScheme.primary,
icon: Icon(
iconData,
size: 24.0,
),
onPressed: onPressed,
),
);
}
}

View File

@ -5,6 +5,7 @@ import 'package:provider/provider.dart';
import 'package:smoke_cess_app/models/settings.dart'; import 'package:smoke_cess_app/models/settings.dart';
import 'package:smoke_cess_app/services/json_service.dart'; import 'package:smoke_cess_app/services/json_service.dart';
import 'package:smoke_cess_app/services/settings_service.dart'; import 'package:smoke_cess_app/services/settings_service.dart';
import 'package:smoke_cess_app/widgets/buttons/text_icon_button.dart';
import '../providers/settings_provider.dart'; import '../providers/settings_provider.dart';
import '../services/notification_service.dart'; import '../services/notification_service.dart';
import 'buttons/round_button_widget.dart'; import 'buttons/round_button_widget.dart';
@ -77,9 +78,9 @@ class MyScanner extends StatelessWidget {
color: Colors.white.withOpacity(0.4))), color: Colors.white.withOpacity(0.4))),
], ],
)) ))
: RoundButton( : TextIconButton(
text: "Scan",
onPressed: () => settingsProvider.scanning = true, onPressed: () => settingsProvider.scanning = true,
iconData: Icons.qr_code_scanner_outlined, iconData: Icons.qr_code_scanner_outlined);
);
} }
} }