Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
0f7508e
Flutter BLoC
number19th Apr 24, 2021
fd7e456
Mobx
number19th Apr 25, 2021
2de8248
sbk up to 2.12
number19th Apr 26, 2021
6769bc2
2 Store
number19th Apr 26, 2021
a934b81
LoginPage в отдельном файле
number19th Apr 26, 2021
396586a
Регистрация и обновление учатсников
number19th Apr 26, 2021
9a49c58
Регистрация и авторизация работают
number19th Apr 27, 2021
410d9fd
Добавил правила
number19th Apr 28, 2021
7337ad8
Добавлен NavyBar
number19th May 1, 2021
6c26066
Инициализация всех вычисляемых полей
number19th May 5, 2021
16d6f58
Добавлена "Моя команда"
number19th May 5, 2021
cf58f27
Подтвержение локально
number19th May 5, 2021
e8775da
Исправление к странице команды
number19th May 6, 2021
d3f5e61
Перед Bloc
number19th May 7, 2021
2401c9d
Закончена моя команда
number19th May 10, 2021
14e30ad
Добавлено создание расписания
number19th May 10, 2021
a78ce04
Отображены туры
number19th May 10, 2021
37ab4ac
Добавление вида тура
number19th May 11, 2021
0513cba
Добавлен корректный вид для нецифровых названий тура
number19th May 12, 2021
1c859f5
Разное отображение тура на разных вкладках
number19th May 13, 2021
547b41f
Отображение матчей для каждого тура
number19th May 13, 2021
577c8c4
Отображение матчей для прогнозирования
number19th May 17, 2021
53f0c7e
Ручной дедлайн
number19th May 19, 2021
3e0d296
Изменил вид матчей для прогнозирования
number19th May 19, 2021
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
15 changes: 15 additions & 0 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"version": "2.0.0",
"tasks": [
{
"type": "dart",
"command": "dart",
"args": [
"pub",
"get"
],
"problemMatcher": [],
"label": "dart: dart pub get"
}
]
}
1 change: 0 additions & 1 deletion team_c_f/assets/images/google.svg

This file was deleted.

80 changes: 80 additions & 0 deletions team_c_f/lib/components/createschedule.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:team_c_f/servises/servises.dart';
import 'package:team_c_f/storebloc/blocs/createschedule.dart';
import 'package:provider/provider.dart';
import 'package:team_c_f/storebloc/blocs/schedule.dart';

class CreateScheduleView extends StatelessWidget {
const CreateScheduleView({Key? key}) : super(key: key);

@override
Widget build(BuildContext context) {
CreateScheduleBloc bloc = context.watch<CreateScheduleBloc>();
return Container(
child: Card(
child: ListTile(
title: Container(
padding: const EdgeInsets.all(8.0),
child: Column(
children: [
Text(
showRegisterTeam(bloc.state.registTeam) +
' ' +
showTeam(bloc.state.registTeam),
),
SizedBox(height: 20),
Text(
showFullTeam(bloc.state.fullTeam) +
' ' +
showTeam(bloc.state.fullTeam),
),
SizedBox(height: 20),
Text('Укажите количество кругов в чемпионате'),
TextField(
textAlign: TextAlign.center,
keyboardType: TextInputType.number,
onChanged: (circle) {
circle.trim();
bloc.state.circle = circle != '' ? int.parse(circle) : 1;
bloc.add(CreateScheduleEvent.changeCircle);
},
inputFormatters: <TextInputFormatter>[
FilteringTextInputFormatter.allow(RegExp(r'[0-9]')),
],
),
SizedBox(height: 20),
Text(
'Ожидается ' +
showMatches(
matches: bloc.state.matches,
) +
' в каждом туре',
),
SizedBox(height: 20),
Text(
'Ожидается ' +
showTours(
tours: bloc.state.tours,
),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: () {
bloc.add(CreateScheduleEvent.createSchedule);
context
.read<ScheduleBloc>()
.add(ScheduleEvent(event: Event.createSuccessful));
},
child: Text(
'Создать расписание',
),
),
],
),
),
),
),
);
}
}
106 changes: 106 additions & 0 deletions team_c_f/lib/components/login.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
import 'package:flutter/material.dart';
import 'package:flutter_mobx/flutter_mobx.dart';
import 'package:provider/provider.dart';
import 'package:team_c_f/components/reglament.dart';
import 'package:team_c_f/components/selectteam.dart';
import 'package:team_c_f/store/login/login.dart';

class LoginView extends StatelessWidget {
@override
Widget build(BuildContext context) {
final Login login = Provider.of<Login>(context);
return Container(
height: double.infinity,
width: double.infinity,
child: Column(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Observer(
builder: (_) => ElevatedButton(
onPressed: () {
login.updatedLoginStatus
? login.googleLogout()
: login.googleLogin();
},
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
Text(
login.updatedLoginStatus ? 'Выйти' : 'Войти',
),
SizedBox(width: 10),
Image(
image: AssetImage('assets/images/google.png'),
fit: BoxFit.fill,
height: 30,
),
],
),
),
),
Observer(
builder: (_) => Text(
login.updatedLoginStatus
? 'Вход выполнен, осталось совсем чуть чуть'
: 'Необходимо войти в аккаунт',
textAlign: TextAlign.center,
),
),
Observer(
builder: (_) => TextButton(
onPressed: () {
if (login.info != null)
Navigator.of(context)
.push(MaterialPageRoute<bool?>(
builder: (_) => ReglamentView(info: login.info!)))
.then((value) => login.changeName(value!.toString()));
},
child: Text('Правила конкурса'),
),
),
Container(
padding: const EdgeInsets.all(8.0),
margin: const EdgeInsets.all(8.0),
decoration: BoxDecoration(
color: Colors.blue,
borderRadius: BorderRadius.circular(16.0),
),
child: Column(
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
'Введите ваше имя и фамилию',
style: TextStyle(
color: Colors.white,
),
),
),
TextField(
// Ввод имени участника
decoration: InputDecoration(
fillColor: Colors.white,
filled: true,
),
onChanged: login.changeName,
textAlign: TextAlign.center,
),
],
),
),
Observer(
builder: (_) {
Provider.of<Login>(context)
.setDataToSelectTeam(buttonText: 'Зарегистрироваться');
return SelectTeamView(
selectTeam: context.read<Login>().selectTeam,
updateMyTeam: false,
);
},
),
],
),
);
}
}
52 changes: 52 additions & 0 deletions team_c_f/lib/components/meet.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import 'package:flutter/material.dart';
import 'package:team_c_f/models/meet.dart';
import 'package:intl/intl.dart';

class MeetView extends StatelessWidget {
final MeetData meetData;
const MeetView({Key? key, required this.meetData}) : super(key: key);

@override
Widget build(BuildContext context) {
DateTime date = DateFormat('yyyy-MM-dd HH:mm').parse(meetData.date);
String status = meetData.status == 'Не начат'
? date.day == DateTime.now().day
? DateFormat('HH:mm').format(date)
: DateFormat('dd.MM').format(date)
: meetData.status;
String score = meetData.started
? '${meetData.score.first}:${meetData.score.last}'
: '-';
double width = MediaQuery.of(context).size.width;
return Padding(
padding: const EdgeInsets.all(2.0),
child: Container(
padding: const EdgeInsets.all(8.0),
color: meetData.started ? Colors.green[100] : Colors.yellow[300],
width: width - 15,
child: Column(
children: [
Table(
columnWidths: {
0: FixedColumnWidth(width/6.5),
1: FixedColumnWidth(width/3),
2: FixedColumnWidth(width/10),
3: FixedColumnWidth(width/3)
},
children: [
TableRow(
children: [
Text(status, textAlign: TextAlign.center),
Text(meetData.team.first, textAlign: TextAlign.right),
Text(score, textAlign: TextAlign.center),
Text(meetData.team.last),
],
),
],
),
],
),
),
);
}
}
95 changes: 95 additions & 0 deletions team_c_f/lib/components/oneteam.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
import 'package:flutter/material.dart';
import 'package:team_c_f/storebloc/blocs/leaveforecast.dart';
import 'package:team_c_f/storebloc/models/leaveforecast.dart';
import 'package:provider/provider.dart';

class OneTeamView extends StatelessWidget {
final LeaveForecastModel forecast;
OneTeamView({Key? key, required this.forecast}) : super(key: key);

final List<int> numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
@override
Widget build(BuildContext context) {
LeaveForecastBloc bloc = context.read<LeaveForecastBloc>();
double size = MediaQuery.of(context).size.width;
return Card(
color: Colors.blue[400],
child: Table(
defaultVerticalAlignment: TableCellVerticalAlignment.middle,
columnWidths: {
0: FixedColumnWidth(size / 7),
1: FixedColumnWidth(size / 3),
2: FixedColumnWidth(size / 11),
3: FixedColumnWidth(size / 40),
4: FixedColumnWidth(size / 11),
5: FixedColumnWidth(size / 3),
},
children: [
TableRow(
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(forecast.date),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
forecast.teams.first,
textAlign: TextAlign.right,
),
),
DropdownButton<int>(
value: forecast.home,
onChanged: (i) {
bloc.add(
LeaveForecastEvent(
event: Event.changeValue,
position: true,
index: bloc.state.meets.indexOf(forecast),
newValue: i),
);
},
items: [
...numbers.map<DropdownMenuItem<int>>(
(int number) => DropdownMenuItem(
child: Text(number.toString()),
value: number,
),
),
],
),
Text(':'),
DropdownButton<int>(
value: forecast.away,
onChanged: (i) {
bloc.add(
LeaveForecastEvent(
event: Event.changeValue,
position: false,
index: bloc.state.meets.indexOf(forecast),
newValue: i),
);
},
items: [
...numbers.map<DropdownMenuItem<int>>(
(int number) => DropdownMenuItem(
child: Text(number.toString()),
value: number,
),
),
],
),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
forecast.teams.last,
textAlign: TextAlign.left,
),
),
],
),
],
),
);
}
}
Loading