mirror of
https://gitlab.com/comunic/comunicmobile
synced 2024-11-22 21:09:21 +00:00
Ready to start to show the list of members
This commit is contained in:
parent
032815b29f
commit
099f282cd6
43
lib/ui/dialogs/screen_dialog.dart
Normal file
43
lib/ui/dialogs/screen_dialog.dart
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
import 'dart:math';
|
||||||
|
|
||||||
|
import 'package:comunic/utils/ui_utils.dart';
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
/// Screen dialog
|
||||||
|
///
|
||||||
|
/// @author Pierre Hubert
|
||||||
|
|
||||||
|
/// Show a screen dialog
|
||||||
|
///
|
||||||
|
/// This widget automatically adapt himself if we are in tablet
|
||||||
|
/// or in mobile mode
|
||||||
|
Future<T> showScreenDialog<T>(BuildContext context, Widget screen) async {
|
||||||
|
// TODO : add mobile support
|
||||||
|
if (!isTablet(context)) throw Exception("Unsupported mode!");
|
||||||
|
|
||||||
|
return await showDialog(
|
||||||
|
context: context, builder: (c) => _ScreenDialog(body: screen));
|
||||||
|
}
|
||||||
|
|
||||||
|
class _ScreenDialog extends StatelessWidget {
|
||||||
|
final Widget body;
|
||||||
|
|
||||||
|
const _ScreenDialog({Key key, this.body}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
final size = MediaQuery.of(context).size;
|
||||||
|
final width = min(500.0, size.width - 50);
|
||||||
|
final height = min(800.0, size.height - 50);
|
||||||
|
|
||||||
|
return AlertDialog(
|
||||||
|
contentPadding: EdgeInsets.all(0.0),
|
||||||
|
content: Container(
|
||||||
|
width: width,
|
||||||
|
height: height,
|
||||||
|
child: body,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -1,7 +1,9 @@
|
|||||||
import 'package:comunic/helpers/conversations_helper.dart';
|
import 'package:comunic/helpers/conversations_helper.dart';
|
||||||
import 'package:comunic/helpers/events_helper.dart';
|
import 'package:comunic/helpers/events_helper.dart';
|
||||||
import 'package:comunic/models/conversation.dart';
|
import 'package:comunic/models/conversation.dart';
|
||||||
|
import 'package:comunic/ui/dialogs/screen_dialog.dart';
|
||||||
import 'package:comunic/ui/screens/conversation_screen.dart';
|
import 'package:comunic/ui/screens/conversation_screen.dart';
|
||||||
|
import 'package:comunic/ui/screens/user_page_screen.dart';
|
||||||
import 'package:comunic/ui/widgets/safe_state.dart';
|
import 'package:comunic/ui/widgets/safe_state.dart';
|
||||||
import 'package:comunic/ui/widgets/tablet_mode/conversations/conversation_window_container.dart';
|
import 'package:comunic/ui/widgets/tablet_mode/conversations/conversation_window_container.dart';
|
||||||
import 'package:comunic/utils/account_utils.dart';
|
import 'package:comunic/utils/account_utils.dart';
|
||||||
@ -13,6 +15,8 @@ import 'package:flutter/material.dart';
|
|||||||
///
|
///
|
||||||
/// @author Pierre Hubert
|
/// @author Pierre Hubert
|
||||||
|
|
||||||
|
enum _Actions { OPEN_MEMBERS }
|
||||||
|
|
||||||
class ConversationWindow extends StatefulWidget {
|
class ConversationWindow extends StatefulWidget {
|
||||||
final int convID;
|
final int convID;
|
||||||
final Function() onClose;
|
final Function() onClose;
|
||||||
@ -119,10 +123,35 @@ class _ConversationWindowState extends SafeState<ConversationWindow> {
|
|||||||
onClose: widget.onClose,
|
onClose: widget.onClose,
|
||||||
onToggleCollapse: _toggleVisibility,
|
onToggleCollapse: _toggleVisibility,
|
||||||
isCollapsed: _collapsed,
|
isCollapsed: _collapsed,
|
||||||
|
action: <Widget>[
|
||||||
|
PopupMenuButton<_Actions>(
|
||||||
|
itemBuilder: (c) => [
|
||||||
|
// Show the list of members
|
||||||
|
PopupMenuItem(
|
||||||
|
child: Text(tr("Members")),
|
||||||
|
value: _Actions.OPEN_MEMBERS,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
onSelected: _menuCallback,
|
||||||
|
),
|
||||||
|
],
|
||||||
body: ConversationScreen(
|
body: ConversationScreen(
|
||||||
key: _convKey,
|
key: _convKey,
|
||||||
conversationID: _convID,
|
conversationID: _convID,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _menuCallback(_Actions value) {
|
||||||
|
switch (value) {
|
||||||
|
case _Actions.OPEN_MEMBERS:
|
||||||
|
_openMembersList();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void _openMembersList() {
|
||||||
|
// dummy test
|
||||||
|
showScreenDialog(context, UserPageScreen(userID: 1));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@ class ConversationWindowContainer extends StatelessWidget {
|
|||||||
final void Function() onToggleCollapse;
|
final void Function() onToggleCollapse;
|
||||||
final bool isCollapsed;
|
final bool isCollapsed;
|
||||||
final Widget body;
|
final Widget body;
|
||||||
|
final List<Widget> action;
|
||||||
|
|
||||||
const ConversationWindowContainer({
|
const ConversationWindowContainer({
|
||||||
Key key,
|
Key key,
|
||||||
@ -24,6 +25,7 @@ class ConversationWindowContainer extends StatelessWidget {
|
|||||||
@required this.body,
|
@required this.body,
|
||||||
@required this.onToggleCollapse,
|
@required this.onToggleCollapse,
|
||||||
@required this.isCollapsed,
|
@required this.isCollapsed,
|
||||||
|
this.action,
|
||||||
}) : assert(title != null),
|
}) : assert(title != null),
|
||||||
assert(onClose != null),
|
assert(onClose != null),
|
||||||
assert(body != null),
|
assert(body != null),
|
||||||
@ -42,9 +44,10 @@ class ConversationWindowContainer extends StatelessWidget {
|
|||||||
backgroundColor: appBarBgColor,
|
backgroundColor: appBarBgColor,
|
||||||
leading: icon,
|
leading: icon,
|
||||||
title: GestureDetector(child: title, onTap: onToggleCollapse),
|
title: GestureDetector(child: title, onTap: onToggleCollapse),
|
||||||
actions: <Widget>[
|
actions: (action == null ? [] : action)
|
||||||
|
..add(
|
||||||
IconButton(icon: Icon(Icons.close), onPressed: onClose),
|
IconButton(icon: Icon(Icons.close), onPressed: onClose),
|
||||||
],
|
),
|
||||||
),
|
),
|
||||||
body: Visibility(
|
body: Visibility(
|
||||||
child: body,
|
child: body,
|
||||||
|
Loading…
Reference in New Issue
Block a user