1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2024-11-22 12:59:21 +00:00

Can collpase conversation window

This commit is contained in:
Pierre HUBERT 2020-05-09 10:20:06 +02:00
parent 38f0257fa3
commit 2cea14a012
2 changed files with 25 additions and 3 deletions

View File

@ -31,11 +31,16 @@ class _ConversationWindowState extends SafeState<ConversationWindow> {
Conversation _conversation;
String _convTitle;
bool _error = false;
bool _collapsed = false;
int get _convID => widget.convID;
final _convKey = UniqueKey();
void _setError(bool e) => setState(() => _error = e);
void _toggleVisibility() => setState(() => _collapsed = !_collapsed);
Future<void> _refresh() async {
try {
_setError(false);
@ -71,6 +76,8 @@ class _ConversationWindowState extends SafeState<ConversationWindow> {
return ConversationWindowContainer(
title: Text(tr("Error")),
onClose: widget.onClose,
onToggleCollpase: _toggleVisibility,
isCollapsed: _collapsed,
body: buildErrorCard(tr("Could not load conversation information!"),
actions: [
FlatButton(
@ -86,13 +93,18 @@ class _ConversationWindowState extends SafeState<ConversationWindow> {
return ConversationWindowContainer(
title: Text(tr("Loading...")),
onClose: widget.onClose,
onToggleCollpase: _toggleVisibility,
isCollapsed: _collapsed,
body: buildCenteredProgressBar(),
);
return ConversationWindowContainer(
title: Text(_convTitle),
onClose: widget.onClose,
onToggleCollpase: _toggleVisibility,
isCollapsed: _collapsed,
body: ConversationScreen(
key: _convKey,
conversationID: _convID,
),
);

View File

@ -9,6 +9,8 @@ import 'package:flutter/material.dart';
class ConversationWindowContainer extends StatelessWidget {
final Widget title;
final void Function() onClose;
final void Function() onToggleCollpase;
final bool isCollapsed;
final Widget body;
const ConversationWindowContainer({
@ -16,9 +18,13 @@ class ConversationWindowContainer extends StatelessWidget {
@required this.title,
@required this.onClose,
@required this.body,
@required this.onToggleCollpase,
@required this.isCollapsed,
}) : assert(title != null),
assert(onClose != null),
assert(body != null),
assert(onToggleCollpase != null),
assert(isCollapsed != null),
super(key: key);
@override
@ -26,15 +32,19 @@ class ConversationWindowContainer extends StatelessWidget {
return Card(
child: Container(
width: 300,
height: 400,
height: !isCollapsed ? 400 : 40,
child: Scaffold(
appBar: AppBar(
title: title,
title: GestureDetector(child: title, onTap: onToggleCollpase),
actions: <Widget>[
IconButton(icon: Icon(Icons.close), onPressed: onClose),
],
),
body: body,
body: Visibility(
child: body,
visible: !isCollapsed,
maintainState: true,
),
),
),
);