Skip to content

Commit

Permalink
N menu
Browse files Browse the repository at this point in the history
+
  • Loading branch information
rawad963 committed Nov 21, 2023
1 parent dabf58b commit 2720ce7
Show file tree
Hide file tree
Showing 4 changed files with 251 additions and 65 deletions.
15 changes: 12 additions & 3 deletions lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@ import 'package:weekplanner/screens/choose_citizen_screen.dart';
import 'package:weekplanner/screens/login_screen.dart';
import 'package:weekplanner/screens/weekplan_selector_screen.dart';
import 'package:weekplanner/widgets/giraf_notify_dialog.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';


final Api _api = di.get<Api>();
final AuthBloc _authBloc = di.get<AuthBloc>();
Expand Down Expand Up @@ -45,6 +44,7 @@ void _runApp() {
title: 'Weekplanner',
theme: ThemeData(fontFamily: 'Quicksand'),
//debugShowCheckedModeBanner: false,

home: StreamBuilder<bool>(
initialData: false,
stream: di.get<AuthBloc>().loggedIn.where((bool currentState) =>
Expand Down Expand Up @@ -78,7 +78,16 @@ void _runApp() {
Routes().goHome(context);
return LoginScreen();
}
})));
}),


routes: {
//'/profil': (context) => WeekplanSelectorScreen(),
'/skift bruger': (context) => ChooseCitizenScreen(),
'/log af': (context) => LoginScreen(),
},

));
}

/// Lost connection dialog
Expand Down
4 changes: 3 additions & 1 deletion lib/screens/login_screen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ import 'package:weekplanner/screens/pictogram_login_screen.dart';
import 'package:weekplanner/style/font_size.dart';
import 'package:weekplanner/widgets/giraf_notify_dialog.dart';
import 'package:weekplanner/widgets/loading_spinner_widget.dart';
import 'package:api_client/models/displayname_model.dart';


import '../style/custom_color.dart' as theme;

Expand Down Expand Up @@ -56,7 +58,7 @@ class LoginScreenState extends State<LoginScreen> {
if (snapshot) {
// Pop the loading spinner
Routes().goHome(context);
}
}
// Stop listening for future logins
loginListener.cancel();
});
Expand Down
215 changes: 182 additions & 33 deletions lib/screens/new_weekplan_screen.dart
Original file line number Diff line number Diff line change
@@ -1,58 +1,207 @@
// ignore_for_file: lines_longer_than_80_chars, always_specify_types

import 'package:api_client/models/displayname_model.dart';
import 'package:api_client/models/week_model.dart';
import 'package:api_client/models/week_name_model.dart';
import 'package:flutter/material.dart';
import 'package:weekplanner/blocs/new_weekplan_bloc.dart';
import 'package:weekplanner/di.dart';
import 'package:weekplanner/routes.dart';
import 'package:weekplanner/widgets/giraf_app_bar_widget.dart';
import 'package:weekplanner/widgets/giraf_button_widget.dart';
import 'package:weekplanner/widgets/input_fields_weekplan.dart';

/// Screen for creating a new weekplan.
// ignore: public_member_api_docs
class NewWeekplanScreen extends StatelessWidget {
/// Screen for creating a new weekplan.
/// Requires a [UsernameModel] to be able to save the new weekplan.

// ignore: public_member_api_docs
NewWeekplanScreen({
@required DisplayNameModel user,
@required this.user,
@required this.existingWeekPlans,
}) : _bloc = di.get<NewWeekplanBloc>() {
_bloc.initialize(user);
}

/// Stream of existing week plans.
// ignore: public_member_api_docs
final DisplayNameModel user;
// ignore: public_member_api_docs
final Stream<List<WeekNameModel>> existingWeekPlans;
final NewWeekplanBloc _bloc;

@override
Widget build(BuildContext context) {
final GirafButton saveButton = GirafButton(
icon: const ImageIcon(AssetImage('assets/icons/save.png')),
key: const Key('NewWeekplanSaveBtnKey'),
text: 'Gem ugeplan',
isEnabled: false,
isEnabledStream: _bloc.allInputsAreValidStream,
onPressed: () async {
final WeekModel newWeekPlan = await _bloc.saveWeekplan(
screenContext: context,
existingWeekPlans: existingWeekPlans,
);
try {
if (newWeekPlan != null) {
Routes().pop<WeekModel>(context, newWeekPlan);
}
} catch (err) {
print('No new weekplan exists' '\n Error: ' + err.toString());
}
},
);
final Size screenSize = MediaQuery.of(context).size;

return Scaffold(
appBar: GirafAppBar(title: 'Ny ugeplan'),
body: InputFieldsWeekPlan(
bloc: _bloc,
button: saveButton,
body: Row(
children: [
Expanded(
flex: 1,
child: Container(
child: Stack(
children: <Widget>[
Image.asset(
'assets/icons/giraf_blue_long.png',
repeat: ImageRepeat.repeat,
height: screenSize.height,
fit: BoxFit.cover,
),
Container(
padding: const EdgeInsets.all(20.0),
child: Column(
children: <Widget>[
Align(
alignment: Alignment.center,
// ignore: duplicate_ignore
child: Container(
padding: const EdgeInsets.all(10.0),
decoration: BoxDecoration(
color: Colors.white,
border: Border.all(color: Colors.black, width: 2.0),
borderRadius: BorderRadius.circular(10.0),
),
child: Builder(
builder: (BuildContext context) {
return IconButton(
key: const Key('NavigationMenu'),
padding: const EdgeInsets.all(0.0),
color: Colors.black,
icon: const Icon(Icons.menu, size: 60),
onPressed: () {
Scaffold.of(context).openDrawer();
},
);
},
),
),
),
],
),
),
],
),
),
),
Expanded(
flex: 5,
child: InputFieldsWeekPlan(
bloc: _bloc, button: null,
),
),
Expanded(
flex: 1,
child: Container(
child: Stack(
children: <Widget>[
Image.asset(
'assets/icons/giraf_blue_long.png',
repeat: ImageRepeat.repeat,
height: screenSize.height,
fit: BoxFit.cover,
),
Container(
padding: const EdgeInsets.all(20.0),
child: Column(
children: <Widget>[
Align(
alignment: Alignment.center,
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Container(
padding: const EdgeInsets.all(10.0),
decoration: BoxDecoration(
color: Colors.white,
border: Border.all(color: Colors.black, width: 2.0),
borderRadius: BorderRadius.circular(10.0),
),
child: IconButton(
key: const Key('CheckIcon'),
padding: const EdgeInsets.all(0.0),
color: Colors.black, // Icon color
icon: const Icon(Icons.check, size: 60),
onPressed: () async {
final WeekModel newWeekPlan = await _bloc.saveWeekplan(
screenContext: context,
existingWeekPlans: existingWeekPlans,
);
try {
if (newWeekPlan != null) {
Routes().pop<WeekModel>(context, newWeekPlan);
}
} catch (err) {
print('No new weekplan exists' '\n Error: ' + err.toString());
}
},
),
),
const SizedBox(height: 30),
Container(
padding: const EdgeInsets.all(10.0),
decoration: BoxDecoration(
color: Colors.white,
border: Border.all(color: Colors.black, width: 2.0),
borderRadius: BorderRadius.circular(10.0),
),
child: IconButton(
key: const Key('CloseIcon'),
padding: const EdgeInsets.all(0.0),
color: Colors.black, // Icon color
icon: const Icon(Icons.close, size: 60),
onPressed: () {
Navigator.of(context).pop();
},
),
),
],
),
),
],
),
),
],
),
),
),
],
),
drawer: Drawer(
child: ListView(
children: [
ListTile(
leading: const Icon(Icons.home),
title: const Text('Ugeplaner'),
onTap: () {
Navigator.pop(context);
Navigator.of(context).pop();
},
),
ListTile(
leading: const Icon(Icons.person),
title: const Text('Profil'),
onTap: () {
Navigator.pop(context);
Navigator.pushNamed(context, '/profil');

},
),
ListTile(
leading: const Icon(Icons.person),
title: const Text('Skift bruger'),
onTap: () {
Navigator.pop(context);
Navigator.pushNamed(context, '/skift bruger');
},
),
ListTile(
leading: const Icon(Icons.exit_to_app),
title: const Text('Log af'),
onTap: () {
Navigator.pop(context);
Navigator.pushNamed(context, '/log af');
},
),
],
),
),

);
}
}
}
Loading

0 comments on commit 2720ce7

Please sign in to comment.