139 lines
4.8 KiB
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),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
}
|