Files
fforte/lib/home.dart

139 lines
4.8 KiB
Dart

import 'package:fforte/screens/sharedMethods/send_file.dart';
import 'package:flutter/material.dart';
import 'l10n/app_localizations.dart';
import 'screens/addCam/add_cam_main.dart';
// * Home screen of the LUPUS app
// * Serves as the main navigation hub with sections for:
// * - Camera trap management
// * - Excursion tracking
// * - File operations
// * - Settings access
/// Home screen widget providing access to all main app features
class HomePage extends StatelessWidget {
const HomePage({super.key});
// Commented out legacy file sending functionality
// void _sendFile() async {
// // FilePickerResult? result = await FilePicker.platform.pickFiles();
// // if (result != null) {
// // File file = File(result.files.single.path!);
// // String content = await file.readAsString();
// // HttpRequest.httpRequest(saveDataString: content);
// // }
// }
@override
Widget build(BuildContext context) {
return Scaffold(
// App bar with settings menu
appBar: AppBar(
title: const Text("LUPUS"),
actions: [
PopupMenuButton(
onSelected: (value) {
Navigator.pushNamed(context, value.toString());
},
itemBuilder: (context) => [
// Settings menu option
PopupMenuItem(
value: '/settings',
child: Text(AppLocalizations.of(context)!.settings),
),
// Option to show intro screen
PopupMenuItem(
value: '/introScreen',
child: Text(AppLocalizations.of(context)!.showloginscreen),
),
],
),
],
),
// Main content area
body: Column(
children: [
// App logo at the top
Image.asset('assets/images/reconix_small.png'),
Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const SizedBox(height: 30),
// * Camera Trap Management Section
// Button to add new camera location
ElevatedButton(
style: ElevatedButton.styleFrom(
minimumSize: const Size(250, 40),
padding: const EdgeInsets.fromLTRB(10, 5, 10, 5),
),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const AddCamMain(),
),
);
},
child: Text(AppLocalizations.of(context)!.addplace),
),
// Button to view camera locations
ElevatedButton(
style: ElevatedButton.styleFrom(
minimumSize: const Size(250, 40),
),
onPressed: () => Navigator.pushNamed(context, '/viewCams'),
child: Text(AppLocalizations.of(context)!.viewplaces),
),
// Visual section divider
const SizedBox(height: 20),
const Divider(),
const SizedBox(height: 20),
// * Excursion Management Section
// Button to start new excursion
ElevatedButton(
style: ElevatedButton.styleFrom(
minimumSize: const Size(250, 40),
),
onPressed: () => Navigator.pushNamed(context, '/excursion'),
child: Text(AppLocalizations.of(context)!.excursion),
),
const SizedBox(height: 10),
// Button to view excursions
ElevatedButton(
style: ElevatedButton.styleFrom(
minimumSize: const Size(250, 40),
),
onPressed: () => Navigator.pushNamed(context, '/viewExcursionen'),
child: Text(AppLocalizations.of(context)!.viewExcursionen),
),
// Visual section divider
const SizedBox(height: 20),
const Divider(),
const SizedBox(height: 20),
// * File Operations Section
// Button to send data files
ElevatedButton(
style: ElevatedButton.styleFrom(
minimumSize: const Size(250, 40),
),
onPressed: () {
SendFile.sendFile();
},
child: Text(AppLocalizations.of(context)!.sendfile),
),
],
),
),
],
),
);
}
}