Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions application/lib/data/boxes.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import 'package:hive/hive.dart';

late Box boxSessions;
late Box boxPreviousSessions;
37 changes: 17 additions & 20 deletions application/lib/data/provider.dart
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:innorun/pages/map.dart';
import 'package:hive/hive.dart';
import 'package:latlong2/latlong.dart';
import 'package:dio/dio.dart';

part 'provider.g.dart';


class CreatedSessions extends ChangeNotifier {
List<Session> _sessions = [];
List<Session> get sessions => _sessions;

void addSession(String name, String time, String place,List<LatLng> latlng ) {
_sessions.insert(0, Session(name: name, time: time, place: place, latlng: latlng));
void addSession(String description, String time, String place,List<LatLng> latlng ) {
_sessions.insert(0, Session(description: description, time: time, place: place, latlng: latlng));
notifyListeners();
}
void removeSession(int index) {
Expand All @@ -20,28 +21,24 @@ class CreatedSessions extends ChangeNotifier {
}
}

class Parser {
static String base_url = 'http://localhost:5000/';

static Future<List<Session>> getSessions() async {
final response = await Dio().get(base_url);
List<Session> sessions = [];
for (var i = 0; i < response.data.length; i++) {
sessions.add(convertFromJson(response.data[i]));
}
return sessions;
}
}

@HiveType(typeId: 0)
class Session {
final String name;
@HiveField(0)
final String description;

@HiveField(1)
final String time;

@HiveField(2)
final String place;

@HiveField(3)
final List<LatLng> latlng;
Session({required this.name, required this.time, required this.place, required this.latlng});
Session({required this.description, required this.time, required this.place, required this.latlng});
@override
String toString() {
return "time: $time, creator: $name, place: $place";
return "Time: $time, Creator: $description, Place: $place";
}
}

Expand Down
50 changes: 50 additions & 0 deletions application/lib/data/provider.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 7 additions & 2 deletions application/lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
import 'package:flutter/material.dart';
import 'package:innorun/pages/runOwerview.dart';
import 'package:hive_flutter/adapters.dart';
import 'package:provider/provider.dart';
import 'package:innorun/data/theme.dart';
import 'package:innorun/data/provider.dart';
import 'package:innorun/pages/main_page.dart';
import 'package:innorun/pages/map.dart';
import 'package:innorun/data/boxes.dart';

void main() {
void main() async {
await Hive.initFlutter();
Hive.registerAdapter(SessionAdapter());
boxSessions = await Hive.openBox<Session>('sessionBox');
boxPreviousSessions = await Hive.openBox<Session>('previousSessionBox');
runApp(
MultiProvider(
providers: [
Expand Down
2 changes: 1 addition & 1 deletion application/lib/pages/TimerPage.dart
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ class _StopwatchPageState extends State<StopwatchPage> {
List<Session> sessions = createdSessions.sessions;
List<LatLng> _points = sessions[widget.index].latlng;
List<Marker> _markers2 = [];
String name = sessions[widget.index].name;
String name = sessions[widget.index].description;
String time = sessions[widget.index].time;
String place = sessions[widget.index].place;
for(int i = 0; i < _points.length; i++){
Expand Down
53 changes: 53 additions & 0 deletions application/lib/pages/home_page.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import 'package:flutter/material.dart';
import 'package:innorun/data/boxes.dart';
import 'package:innorun/data/provider.dart';

class HomePage extends StatefulWidget {
const HomePage({super.key});

@override
State<HomePage> createState() => HomePageForState();
}

class HomePageForState extends State<HomePage> {

@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
Expanded(
child: Padding(
padding: const EdgeInsets.all(5.0),
child: Card(
child: Padding(
padding: const EdgeInsets.all(10.0),
child: ListView.builder(
itemCount: boxSessions.length,
itemBuilder: (context, index) {
Session session = boxSessions.getAt(index);
return ListTile(
leading: IconButton(
onPressed: () {
setState(() {
boxSessions.deleteAt(index);
});
},
icon: const Icon(Icons.delete),
),
title: Text(session.description),
subtitle: const Text('Description'),
trailing: Text('Time: ${session.time}'),
);
},
)
)
)
)
)
],
)
);
}

}
40 changes: 4 additions & 36 deletions application/lib/pages/main_page.dart
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import 'package:flutter/material.dart';
import 'package:innorun/data/provider.dart';
import 'package:innorun/data/theme.dart';
import 'package:provider/provider.dart';
import 'package:innorun/pages/map.dart';
import 'package:innorun/pages/runOwerview.dart';
import 'home_page.dart';

import 'HistoryPage.dart';

Expand All @@ -24,6 +23,7 @@ class HomePage extends State<HomePageForState> {
MapScreen(),
Icon(Icons.book_outlined),
];

Color navigationBarIconColor = Colors.black;

@override
Expand All @@ -43,47 +43,15 @@ class HomePage extends State<HomePageForState> {
),
],
),
body: Center(
child: Column(
children: <Widget> [
Expanded(
child: ListView.builder(
itemCount: Provider.of<CreatedSessions>(context).sessions.length,
itemBuilder: (context, index) {
return ElevatedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => MapScreenn(index : index)),
);
},
child: Text(Provider.of<CreatedSessions>(context).sessions[index].toString()),
);
},
),
)
],
),
),
body: body[currentIndex],
bottomNavigationBar: BottomNavigationBar(
currentIndex: currentIndex,
type: BottomNavigationBarType.fixed,
fixedColor: navigationBarIconColor,
onTap: (index) {
setState(() {
currentIndex = index;
if (currentIndex == 2) {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => const MapScreen()),
);
}
if (currentIndex == 1) {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => const Historypage()),
);
}
body[currentIndex];
});
},
items: const [
Expand Down
34 changes: 2 additions & 32 deletions application/lib/pages/map.dart
Original file line number Diff line number Diff line change
@@ -1,40 +1,10 @@
import 'package:flutter/material.dart';
import 'package:flutter_map/flutter_map.dart';
import 'package:innorun/data/boxes.dart';
import 'package:latlong2/latlong.dart';
import 'package:provider/provider.dart';
import 'dart:convert';
import '../data/provider.dart';

void main() {
runApp(MaterialApp(home: MapScreen()));
}

void convertToJson(List<LatLng> _latlng, String name, String time, String place){
String pointsJson = jsonEncode(_latlng.map((point) => point.toJson()).toList());
var event = {
'date': time,
'owner': name,
'route': pointsJson,
};
String jsonEvent = jsonEncode(event);
// print(pointsJson);
convertFromJson(jsonEvent);
}

Session convertFromJson(String jsonString) {
Map<String, dynamic> jsonData = jsonDecode(jsonString);
String name = jsonData['owner'];
String time = jsonData['date'];
String place = jsonData['place'];
List<dynamic> pointsJson = jsonDecode(jsonData['route']);
List<LatLng> latlng = pointsJson.map((point) => LatLng.fromJson(point)).toList();

print('Name: $name');
print('Time: $time');
print('LatLng: ${latlng}');
return Session(name: name, time: time, place: place, latlng: latlng);
}

class MapScreen extends StatefulWidget {
const MapScreen({Key? key}) : super(key: key);

Expand Down Expand Up @@ -225,8 +195,8 @@ class _MapScreenState extends State<MapScreen> {
String name = nameController.text;
String time = timeController.text;
String place = placeController.text;
convertToJson(_points, name, time, place);
Provider.of<CreatedSessions>(context, listen: false).addSession(name, time, place, _points);
boxSessions.put('key_$name', Session(description: name, time: time, place: place, latlng: _points));
Navigator.pushNamed(context, '/');
},
style: ButtonStyle(
Expand Down
3 changes: 1 addition & 2 deletions application/lib/pages/runOwerview.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import 'package:flutter_map/flutter_map.dart';
import 'package:latlong2/latlong.dart';
import 'package:provider/provider.dart';
import '../data/provider.dart';
import 'package:innorun/pages/main_page.dart';

import 'TimerPage.dart';

Expand Down Expand Up @@ -35,7 +34,7 @@ class _MapScreenState extends State<MapScreenn> {
Widget build(BuildContext context) {
CreatedSessions createdSessions = Provider.of<CreatedSessions>(context, listen: false);
List<Session> sessions = createdSessions.sessions;
String name = sessions[widget.index].name;
String name = sessions[widget.index].description;
String time = sessions[widget.index].time;
String place = sessions[widget.index].place;
List<LatLng> _points = sessions[widget.index].latlng;
Expand Down
11 changes: 0 additions & 11 deletions application/lib/pages/smth.dart

This file was deleted.

2 changes: 2 additions & 0 deletions application/macos/Flutter/GeneratedPluginRegistrant.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import FlutterMacOS
import Foundation

import path_provider_foundation

func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
}
Loading