Skip to content

Commit

Permalink
feat: first version
Browse files Browse the repository at this point in the history
  • Loading branch information
OldMetalmind committed Oct 5, 2024
1 parent 71cb8ac commit f8b3822
Show file tree
Hide file tree
Showing 6 changed files with 64 additions and 14 deletions.
33 changes: 24 additions & 9 deletions assets/events.json
Original file line number Diff line number Diff line change
@@ -1,19 +1,34 @@
{
"events": [
{
"speaker": "John Doe",
"description": "Introduction to Flutter Development",
"time": "2023-10-01T10:00:00Z"
"speaker": "Filipe Barroso",
"title": "O que é Flutter?",
"description": "Nesta apresentação vai ser uma introdução ao Flutter e como ele funciona",
"time": "2024-10-12T10:00:00Z"
},
{
"speaker": "Jane Smith",
"description": "Advanced State Management in Flutter",
"time": "2023-10-01T11:30:00Z"
"speaker": "???",
"title": "TBA",
"description": "Por anunciar",
"time": "2024-10-12T11:00:00Z"
} ,
{
"speaker": "",
"title": "Almoço",
"description": "Pausa para o almoço",
"time": "2024-10-12T12:00:00Z"
},
{
"speaker": "Flutter Portugal",
"title": "Oficina de Flutter",
"description": "Será-te dado instruções como desenvolver uma aplicação com Flutter, com o apoio de um mentor.",
"time": "2024-10-12T13:00:00Z"
},
{
"speaker": "Alice Johnson",
"description": "Building Responsive UIs with Flutter",
"time": "2023-10-01T13:00:00Z"
"speaker": "Flutter Portugal",
"title": "Contribuições Fogos V2",
"description": "Já estás mais confiante com o Flutter? Então que tal contribuir para o Fogos V2?",
"time": "2024-10-12T13:00:00Z"
}
]
}
6 changes: 4 additions & 2 deletions lib/app.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,10 @@ class MainApp extends StatelessWidget {

@override
Widget build(BuildContext context) {
return const MaterialApp(
home: AgendaPage(),
return MaterialApp(
debugShowCheckedModeBanner: false,
theme: ThemeData.dark(),
home: const AgendaPage(),
);
}
}
2 changes: 2 additions & 0 deletions lib/features/agenda/domain/data.dart
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,13 @@ class Events with EventsMappable {
class Event with EventMappable {
final String speaker;
final String description;
final String title;
final DateTime time;

Event({
required this.speaker,
required this.description,
required this.title,
required this.time,
});
}
15 changes: 13 additions & 2 deletions lib/features/agenda/domain/data.mapper.dart
Original file line number Diff line number Diff line change
Expand Up @@ -125,20 +125,24 @@ class EventMapper extends ClassMapperBase<Event> {
static String _$description(Event v) => v.description;
static const Field<Event, String> _f$description =
Field('description', _$description);
static String _$title(Event v) => v.title;
static const Field<Event, String> _f$title = Field('title', _$title);
static DateTime _$time(Event v) => v.time;
static const Field<Event, DateTime> _f$time = Field('time', _$time);

@override
final MappableFields<Event> fields = const {
#speaker: _f$speaker,
#description: _f$description,
#title: _f$title,
#time: _f$time,
};

static Event _instantiate(DecodingData data) {
return Event(
speaker: data.dec(_f$speaker),
description: data.dec(_f$description),
title: data.dec(_f$title),
time: data.dec(_f$time));
}

Expand Down Expand Up @@ -188,7 +192,8 @@ extension EventValueCopy<$R, $Out> on ObjectCopyWith<$R, Event, $Out> {

abstract class EventCopyWith<$R, $In extends Event, $Out>
implements ClassCopyWith<$R, $In, $Out> {
$R call({String? speaker, String? description, DateTime? time});
$R call(
{String? speaker, String? description, String? title, DateTime? time});
EventCopyWith<$R2, $In, $Out2> $chain<$R2, $Out2>(Then<$Out2, $R2> t);
}

Expand All @@ -199,16 +204,22 @@ class _EventCopyWithImpl<$R, $Out> extends ClassCopyWithBase<$R, Event, $Out>
@override
late final ClassMapperBase<Event> $mapper = EventMapper.ensureInitialized();
@override
$R call({String? speaker, String? description, DateTime? time}) =>
$R call(
{String? speaker,
String? description,
String? title,
DateTime? time}) =>
$apply(FieldCopyWithData({
if (speaker != null) #speaker: speaker,
if (description != null) #description: description,
if (title != null) #title: title,
if (time != null) #time: time
}));
@override
Event $make(CopyWithData data) => Event(
speaker: data.get(#speaker, or: $value.speaker),
description: data.get(#description, or: $value.description),
title: data.get(#title, or: $value.title),
time: data.get(#time, or: $value.time));

@override
Expand Down
21 changes: 20 additions & 1 deletion lib/features/agenda/presentation/agenda_list_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_portugal_scheduler/features/agenda/application/agenda_controller_cubit.dart';
import 'package:flutter_portugal_scheduler/features/agenda/application/agenda_controller_state.dart';
import 'package:flutter_portugal_scheduler/features/agenda/data/events_repository.dart';
import 'package:intl/intl.dart';

class AgendaListView extends StatelessWidget {
const AgendaListView({super.key});
Expand All @@ -21,8 +22,26 @@ class AgendaListView extends StatelessWidget {
return ListView.builder(
itemCount: state.events?.events.length ?? 0,
itemBuilder: (context, index) {
String formattedTime =
DateFormat('HH:mm').format(state.events!.events[index].time);

return ListTile(
title: Text(state.events!.events[index].speaker),
leading: Text(
formattedTime,
style: Theme.of(context).textTheme.displayMedium,
),
subtitle: Text(
state.events!.events[index].description,
style: Theme.of(context).textTheme.labelLarge,
),
title: Text(
state.events!.events[index].title,
style: Theme.of(context).textTheme.titleLarge,
),
trailing: Text(
state.events!.events[index].speaker,
style: Theme.of(context).textTheme.labelLarge,
),
);
},
);
Expand Down
1 change: 1 addition & 0 deletions pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ dependencies:
sdk: flutter
dart_mappable: ^4.2.2
flutter_bloc: ^8.1.6
intl: ^0.19.0

dev_dependencies:
flutter_test:
Expand Down

0 comments on commit f8b3822

Please sign in to comment.