1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2025-06-19 08:15:16 +00:00

Remove Navigator references from conversations pages

This commit is contained in:
2020-04-16 14:58:02 +02:00
parent 3fa45f9744
commit 32c491ae84
10 changed files with 108 additions and 57 deletions

View File

@ -3,9 +3,9 @@ import 'package:comunic/helpers/conversations_helper.dart';
import 'package:comunic/helpers/users_helper.dart';
import 'package:comunic/lists/conversations_list.dart';
import 'package:comunic/models/conversation.dart';
import 'package:comunic/ui/routes/conversation_route.dart';
import 'package:comunic/ui/routes/create_conversation_route.dart';
import 'package:comunic/ui/routes/home_route.dart';
import 'package:comunic/ui/routes/update_conversation_route.dart';
import 'package:comunic/ui/screens/create_conversation_screen.dart';
import 'package:comunic/ui/tiles/conversation_tile.dart';
import 'package:comunic/utils/intl_utils.dart';
import 'package:comunic/utils/ui_utils.dart';
@ -94,27 +94,20 @@ class _ConversationScreenState extends State<ConversationsListScreen> {
}
/// Open a conversation
void _openConversation(BuildContext context, int conversationId) {
Navigator.of(context).push(MaterialPageRoute(builder: (c) {
return ConversationRoute(
conversationID: conversationId,
);
}));
void _openConversation(int conversationId) {
HomeController.of(context).openConversation(conversationId);
}
/// Create a new conversation
void _createConversation(BuildContext context) {
Navigator.of(context)
.push(MaterialPageRoute(builder: (c) => CreateConversationRoute()));
void _createConversation() {
HomeController.of(context).push(CreateConversationScreen());
}
/// Handle conversations updated requests
void _updateConversation(Conversation conversation) {
Navigator.of(context).push(
MaterialPageRoute(
builder: (c) => UpdateConversationRoute(
conversationID: conversation.id,
),
HomeController.of(context).push(
UpdateConversationRoute(
conversationID: conversation.id,
),
);
}
@ -181,7 +174,7 @@ class _ConversationScreenState extends State<ConversationsListScreen> {
conversation: _list.elementAt(index),
usersList: _list.users,
onOpen: (c) {
_openConversation(context, c.id);
_openConversation(c.id);
},
onRequestUpdate: _updateConversation,
onRequestDelete: _requestDeleteConversation,
@ -199,7 +192,7 @@ class _ConversationScreenState extends State<ConversationsListScreen> {
right: 20.0,
bottom: 20.0,
child: FloatingActionButton(
onPressed: () => _createConversation(context),
onPressed: () => _createConversation(),
child: Icon(Icons.add),
),
),

View File

@ -0,0 +1,21 @@
import 'package:comunic/ui/screens/update_conversation_screen.dart';
import 'package:comunic/ui/widgets/comunic_back_button_widget.dart';
import 'package:comunic/utils/intl_utils.dart';
import 'package:flutter/material.dart';
/// Create a new conversation route
///
/// @author Pierre HUBERT
class CreateConversationScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
leading: ComunicBackButton(),
title: Text(tr("Create a conversation")),
),
body: UpdateConversationScreen(),
);
}
}

View File

@ -1,7 +1,7 @@
import 'package:comunic/helpers/conversations_helper.dart';
import 'package:comunic/lists/users_list.dart';
import 'package:comunic/models/conversation.dart';
import 'package:comunic/ui/routes/conversation_route.dart';
import 'package:comunic/ui/routes/home_route.dart';
import 'package:comunic/ui/tiles/simple_user_tile.dart';
import 'package:comunic/ui/widgets/pick_user_widget.dart';
import 'package:comunic/utils/intl_utils.dart';
@ -71,8 +71,8 @@ class _UpdateConversationScreen extends State<UpdateConversationScreen> {
label: tr("Add member"),
enabled: isOwner,
onSelectUser: (user) => setState(() {
if (!_members.contains(user)) _members.add(user);
}),
if (!_members.contains(user)) _members.add(user);
}),
),
//Conversation members
@ -91,11 +91,11 @@ class _UpdateConversationScreen extends State<UpdateConversationScreen> {
_membersMenuItemSelected(i, choice),
itemBuilder: (c) =>
<PopupMenuEntry<_MembersMenuChoices>>[
PopupMenuItem(
child: Text(tr("Remove")),
value: _MembersMenuChoices.REMOVE,
)
],
PopupMenuItem(
child: Text(tr("Remove")),
value: _MembersMenuChoices.REMOVE,
)
],
)
: null,
);
@ -110,8 +110,8 @@ class _UpdateConversationScreen extends State<UpdateConversationScreen> {
Switch(
value: _followConversation,
onChanged: (b) => setState(() {
_followConversation = b;
}),
_followConversation = b;
}),
),
Text(tr("Follow conversation"))
],
@ -158,7 +158,8 @@ class _UpdateConversationScreen extends State<UpdateConversationScreen> {
if (isUpdating)
error = !(await ConversationsHelper().updateConversation(settings));
else {
conversationID = await ConversationsHelper().createConversation(settings);
conversationID =
await ConversationsHelper().createConversation(settings);
if (conversationID < 1) error = true;
}
@ -172,9 +173,9 @@ class _UpdateConversationScreen extends State<UpdateConversationScreen> {
));
// Open the conversation
Navigator.of(context).pushReplacement(MaterialPageRoute(
builder: (c) => ConversationRoute(
conversationID: conversationID,
)));
HomeController.of(context).popPage();
if (!isUpdating)
HomeController.of(context).openConversation(conversationID);
}
}