diff --git a/lib/pages/addshift/addshift_dialog.dart b/lib/pages/addshift/addshift_dialog.dart new file mode 100644 index 0000000..29bfd26 --- /dev/null +++ b/lib/pages/addshift/addshift_dialog.dart @@ -0,0 +1,24 @@ +import 'package:flutter/material.dart'; +import 'package:shiftend/models/models.dart'; +import 'package:shiftend/util/formatters.dart'; + +class AddShiftDialog extends StatelessWidget { + const AddShiftDialog({this.requestedShift}); + final Shift requestedShift; + @override + Widget build(BuildContext context) { + return AlertDialog( + title: const Text('シフトの追加'), + content: Column( + children: [ + ListTile( + title: Text(requestedShift.member.user.name), + subtitle: Text(requestedShift.member.role), + ), + Text(fullDateToJa(requestedShift.start)), + Text(fullDateToJa(requestedShift.end)), + ], + ), + ); + } +} diff --git a/lib/pages/addshift/addshift_item.dart b/lib/pages/addshift/addshift_item.dart index d66e480..ae6ffa8 100644 --- a/lib/pages/addshift/addshift_item.dart +++ b/lib/pages/addshift/addshift_item.dart @@ -1,11 +1,12 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:shiftend/models/models.dart'; +import 'package:shiftend/pages/addshift/addshift_dialog.dart'; class AddShiftItem extends StatelessWidget { - const AddShiftItem({this.member}); + const AddShiftItem({this.requestedShift}); - final Member member; + final Shift requestedShift; @override Widget build(BuildContext context) { @@ -17,7 +18,14 @@ class AddShiftItem extends StatelessWidget { color: Colors.grey[50], padding: const EdgeInsets.all(0), onPressed: () => { - Navigator.of(context).pop(), + Navigator.push( + context, + MaterialPageRoute( + builder: (BuildContext _) => AddShiftDialog( + requestedShift: requestedShift, + ), + ), + ), }, child: Container( child: ListTile( @@ -33,12 +41,12 @@ class AddShiftItem extends StatelessWidget { shape: BoxShape.circle, image: DecorationImage( fit: BoxFit.fill, - image: NetworkImage(member.user.iconUrl), + image: NetworkImage(requestedShift.member.user.iconUrl), ), ), ), - title: Text(member.user.name), - subtitle: Text(member.role), + title: Text(requestedShift.member.user.name), + subtitle: Text(requestedShift.member.role), ), ), ), diff --git a/lib/pages/addshift/addshift_page.dart b/lib/pages/addshift/addshift_page.dart index 5723e02..9008099 100644 --- a/lib/pages/addshift/addshift_page.dart +++ b/lib/pages/addshift/addshift_page.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:shiftend/models/member/member.dart'; import 'package:shiftend/models/shift/shift.dart'; import 'package:shiftend/models/user/user.dart'; +import 'package:shiftend/pages/addshift/shift_item.dart'; import 'package:shiftend/repositories/interfaces/user_repository_interface.dart'; import 'package:shiftend/repositories/mocks/user_repository_mock.dart'; import 'package:shiftend/util/logger.dart'; @@ -9,12 +10,12 @@ import 'package:shiftend/util/logger.dart'; import 'addshift_item.dart'; class AddShiftPage extends StatelessWidget { - AddShiftPage( - {Key key, - @required this.shiftlist, - @required this.requestShiftlist, - @required this.memberslist}) - : super(key: key); + AddShiftPage({ + Key key, + @required this.shiftlist, + @required this.requestShiftlist, + @required this.memberslist, + }) : super(key: key); final UserRepositoryInterface userRepository = UserRepositoryMock(); final List shiftlist; @@ -25,6 +26,9 @@ class AddShiftPage extends StatelessWidget { Widget build(BuildContext context) { final List editedlist = []; logger..info(memberslist)..info(shiftlist); + // TODO: 選択している日付をどこからか持ってくる. + // FIXME: requestShiftlistが空の場合エラーする + final today = requestShiftlist.first.start; final noShiftMembers = memberslist .where((member) => !shiftlist .map((shift) => shift.member.user.id) @@ -35,20 +39,30 @@ class AddShiftPage extends StatelessWidget { editedlist.add(const Text('シフト入ってる人')); if (shiftlist != null) { shiftlist.forEach((shift) { - editedlist.add(AddShiftItem(member: shift.member)); + editedlist.add(ShiftItem(shift: shift)); }); } editedlist.add(const Text('シフト希望')); if (requestShiftlist != null) { requestShiftlist.forEach((requestedShift) { - editedlist.add(AddShiftItem(member: requestedShift.member)); + editedlist.add(AddShiftItem(requestedShift: requestedShift)); }); } editedlist.add(const Text('シフトなし')); if (noShiftMembers != null) { - noShiftMembers.forEach((noShiftlist) { - editedlist.add(AddShiftItem(member: noShiftlist)); - }); + noShiftMembers.forEach( + (noShiftlist) { + editedlist.add( + AddShiftItem( + requestedShift: Shift( + member: noShiftlist, + start: today, + end: today, + ), + ), + ); + }, + ); } return Scaffold( diff --git a/lib/pages/addshift/shift_item.dart b/lib/pages/addshift/shift_item.dart new file mode 100644 index 0000000..66b6af0 --- /dev/null +++ b/lib/pages/addshift/shift_item.dart @@ -0,0 +1,48 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:shiftend/models/models.dart'; + +class ShiftItem extends StatelessWidget { + const ShiftItem({this.shift}); + + final Shift shift; + + @override + Widget build(BuildContext context) { + return Column( + children: [ + FlatButton( + materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, + shape: const RoundedRectangleBorder(), + color: Colors.grey[50], + padding: const EdgeInsets.all(0), + onPressed: () => { + Navigator.of(context).pop(), + }, + child: Container( + child: ListTile( + dense: true, + trailing: const Text( + '削除する', + style: TextStyle(color: Colors.green), + ), + leading: Container( + height: 50, + width: 50, + decoration: BoxDecoration( + shape: BoxShape.circle, + image: DecorationImage( + fit: BoxFit.fill, + image: NetworkImage(shift.member.user.iconUrl), + ), + ), + ), + title: Text(shift.member.user.name), + subtitle: Text(shift.member.role), + ), + ), + ), + ], + ); + } +}