Aitrainer_app 0.0.1

This commit is contained in:
Bossanyi Tibor
2020-05-24 10:04:37 +02:00
commit 2c10480ffd
87 changed files with 3025 additions and 0 deletions
+67
View File
@@ -0,0 +1,67 @@
import 'package:aitrainer_app/viewmodel/exercise_changing_view_model.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:aitrainer_app/viewmodel/customer_view_model.dart';
import 'package:provider/provider.dart';
class CustomerListWidget extends StatefulWidget {
static const routeName = '/customer_list';
final List<CustomerViewModel> customers;
CustomerListWidget({this.customers});
@override
_CustomerListWidget createState() => _CustomerListWidget();
}
class _CustomerListWidget extends State<CustomerListWidget> {
@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: widget.customers.length,
itemBuilder: (context, index) {
final customer = widget.customers[index];
return ListTile(
contentPadding: EdgeInsets.all(10),
leading:Icon(Icons.accessibility),
title: Text(customer.name + " " + customer.firstName),
subtitle:
Container(
child: Visibility(
visible: customer.visibleDetails,
child: Row(
children: <Widget>[
Text(customer.age.toString() + " years, " + customer.sex),
new RaisedButton(
child: new Text('Modify'),
color: Color.fromRGBO(244, 122, 22, 0.9),
onPressed: () => {
},
),
new RaisedButton(
child: new Text('Select'),
color: Colors.blueGrey,
onPressed: () => {
Provider.of<ExerciseChangingViewModel>(context, listen: false).setCustomer(customer.customer),
Navigator.pop(context)
},
),
],
),
),
),
onTap: () { setState( () {
customer.visibleDetails = true;
});
},
);
},
);
}
}
+65
View File
@@ -0,0 +1,65 @@
import 'package:flutter_datetime_picker/flutter_datetime_picker.dart';
class CustomPicker extends CommonPickerModel {
String digits(int value, int length) {
return '$value'.padLeft(length, "0");
}
CustomPicker({DateTime currentTime, LocaleType locale}) : super(locale: locale) {
this.currentTime = currentTime ?? DateTime.now();
this.setLeftIndex(this.currentTime.hour);
this.setMiddleIndex(this.currentTime.minute);
this.setRightIndex(this.currentTime.second);
}
@override
String leftStringAtIndex(int index) {
if (index >= 0 && index < 24) {
return this.digits(index, 2);
} else {
return null;
}
}
@override
String middleStringAtIndex(int index) {
if (index >= 0 && index < 60) {
return this.digits(index, 2);
} else {
return null;
}
}
@override
String rightStringAtIndex(int index) {
if (index >= 0 && index < 60) {
return this.digits(index, 2);
} else {
return null;
}
}
@override
String leftDivider() {
return "|";
}
@override
String rightDivider() {
return "|";
}
@override
List<int> layoutProportions() {
return [1, 2, 1];
}
@override
DateTime finalTime() {
return currentTime.isUtc
? DateTime.utc(currentTime.year, currentTime.month, currentTime.day,
this.currentLeftIndex(), this.currentMiddleIndex(), this.currentRightIndex())
: DateTime(currentTime.year, currentTime.month, currentTime.day, this.currentLeftIndex(),
this.currentMiddleIndex(), this.currentRightIndex());
}
}
@@ -0,0 +1,75 @@
import 'package:aitrainer_app/viewmodel/exercise_changing_view_model.dart';
import 'package:aitrainer_app/viewmodel/exercise_type_view_model.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class ExerciseTypeListWidget extends StatefulWidget {
final List<ExerciseTypeViewModel> exerciseTypes;
ExerciseTypeListWidget({this.exerciseTypes});
@override
_ExerciseTypeListWidgetState createState() => _ExerciseTypeListWidgetState();
}
class _ExerciseTypeListWidgetState extends State<ExerciseTypeListWidget> {
//static const routeName = '/exercise_type_list';
bool visible = false;
// Push the page and remove everything else
navigateToPage(BuildContext context, String page) {
Navigator.of(context).pushNamedAndRemoveUntil(page, (Route<dynamic> route) => false);
}
@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: widget.exerciseTypes.length,
itemBuilder: (context, index) {
final exerciseType = widget.exerciseTypes[index];
return ListTile(
contentPadding: EdgeInsets.all(10),
leading: Icon(Icons.directions_run),
title: Text(exerciseType.name),
subtitle:
Container(
child: Visibility(
visible: exerciseType.visible,
child: Column(
children: <Widget>[
Text(exerciseType.description),
new RaisedButton(
child: new Text('Modify'),
color: Color.fromRGBO(244, 122, 22, 0.9),
onPressed: () => {
Navigator.pushNamed(
context,
'exerciseTypeModifyPage',
arguments: exerciseType
)
},
),
new RaisedButton(
child: new Text('Select'),
color: Colors.blueGrey,
onPressed: () => {
Navigator.pop(context),
Provider.of<ExerciseChangingViewModel>(context, listen: false).setExerciseType(exerciseType.exerciseType),
},
),
],
),
),
),
onTap: () { setState( () {
exerciseType.visible = true;
});
},
);
},
);
}
}
+44
View File
@@ -0,0 +1,44 @@
import 'package:flutter/material.dart';
class NavDrawer extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Drawer(
child: ListView(
padding: EdgeInsets.zero,
children: <Widget>[
DrawerHeader(
child: Text(
'Customers And Exercises',
style: TextStyle(color: Colors.blue, fontSize: 25),
),
),
ListTile(
leading: Icon(Icons.home),
title: Text('Home'),
onTap: () => Navigator.of(context).pushNamed('home'),
),
ListTile(
leading: Icon(Icons.people),
title: Text('Customers'),
//onTap: () => navigateToPage(context, 'customersPage'),
onTap: () => Navigator.of(context).pushNamed('customersPage'),
),
ListTile(
leading: Icon(Icons.directions_run),
title: Text('Exercises'),
onTap: () => Navigator.of(context).pushNamed('exerciseTypeListPage'),
),
ListTile(
leading: Icon(Icons.arrow_upward),
title: Text("TRAINING!"),
onTap: () => Navigator.of(context).pushNamed('exerciseNewPage'),
),
],
),
);
}
}