From af8e558d9f90324803463a246a5e47dd8d0a376f Mon Sep 17 00:00:00 2001 From: Pierre HUBERT Date: Sat, 9 May 2020 09:30:46 +0200 Subject: [PATCH] Create window container --- .../conversations/conversation_window.dart | 19 ++++++++- .../conversation_window_container.dart | 42 +++++++++++++++++++ .../conversations_area_widget.dart | 5 ++- 3 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 lib/ui/widgets/tablet_mode/conversations/conversation_window_container.dart diff --git a/lib/ui/widgets/tablet_mode/conversations/conversation_window.dart b/lib/ui/widgets/tablet_mode/conversations/conversation_window.dart index 8af78bc..bff9ced 100644 --- a/lib/ui/widgets/tablet_mode/conversations/conversation_window.dart +++ b/lib/ui/widgets/tablet_mode/conversations/conversation_window.dart @@ -1,3 +1,8 @@ +import 'package:comunic/models/conversation.dart'; +import 'package:comunic/ui/widgets/safe_state.dart'; +import 'package:comunic/ui/widgets/tablet_mode/conversations/conversation_window_container.dart'; +import 'package:comunic/utils/intl_utils.dart'; +import 'package:comunic/utils/ui_utils.dart'; import 'package:flutter/material.dart'; /// Single conversation window @@ -6,20 +11,30 @@ import 'package:flutter/material.dart'; class ConversationWindow extends StatefulWidget { final int convID; + final Function() onClose; const ConversationWindow({ Key key, @required this.convID, + @required this.onClose, }) : assert(convID != null), + assert(onClose != null), super(key: key); @override _ConversationWindowState createState() => _ConversationWindowState(); } -class _ConversationWindowState extends State { +class _ConversationWindowState extends SafeState { + Conversation _conversation; + String _convTitle; + @override Widget build(BuildContext context) { - return Card();//TODO : continue here + return ConversationWindowContainer( + title: Text(tr("Loading...")), + onClose: widget.onClose, + body: buildCenteredProgressBar(), + ); } } diff --git a/lib/ui/widgets/tablet_mode/conversations/conversation_window_container.dart b/lib/ui/widgets/tablet_mode/conversations/conversation_window_container.dart new file mode 100644 index 0000000..4f6514d --- /dev/null +++ b/lib/ui/widgets/tablet_mode/conversations/conversation_window_container.dart @@ -0,0 +1,42 @@ +import 'package:flutter/material.dart'; + +/// Conversation window +/// +/// Simple container for a conversation +/// +/// @author Pierre Hubert + +class ConversationWindowContainer extends StatelessWidget { + final Widget title; + final void Function() onClose; + final Widget body; + + const ConversationWindowContainer({ + Key key, + @required this.title, + @required this.onClose, + @required this.body, + }) : assert(title != null), + assert(onClose != null), + assert(body != null), + super(key: key); + + @override + Widget build(BuildContext context) { + return Card( + child: Container( + width: 300, + height: 400, + child: Scaffold( + appBar: AppBar( + title: title, + actions: [ + IconButton(icon: Icon(Icons.close), onPressed: onClose), + ], + ), + body: body, + ), + ), + ); + } +} diff --git a/lib/ui/widgets/tablet_mode/conversations/conversations_area_widget.dart b/lib/ui/widgets/tablet_mode/conversations/conversations_area_widget.dart index 2b43c74..4ec09e2 100644 --- a/lib/ui/widgets/tablet_mode/conversations/conversations_area_widget.dart +++ b/lib/ui/widgets/tablet_mode/conversations/conversations_area_widget.dart @@ -34,5 +34,8 @@ class ConversationsAreaWidgetState extends State { setState(() => _openConversations.add(convID)); } - Widget _conversationWindow(int convID) => ConversationWindow(convID: convID); + Widget _conversationWindow(int convID) => ConversationWindow( + convID: convID, + onClose: () => setState(() => _openConversations.remove(convID)), + ); }