add multiplr_conversation example
This commit is contained in:
Generated
+76
-76
@@ -2,17 +2,13 @@
|
|||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="8a42da92-86e3-4aa3-b70d-cc6a9fefa34f" name="Default Changelist" comment="">
|
<list default="true" id="8a42da92-86e3-4aa3-b70d-cc6a9fefa34f" name="Default Changelist" comment="">
|
||||||
<change afterPath="$PROJECT_DIR$/.idea/dictionaries/salvatoregiordano.xml" afterDir="false" />
|
|
||||||
<change afterPath="$PROJECT_DIR$/example/lib/multiple_conversation.dart" afterDir="false" />
|
|
||||||
<change afterPath="$PROJECT_DIR$/lib/src/channel_image.dart" afterDir="false" />
|
|
||||||
<change afterPath="$PROJECT_DIR$/lib/src/channel_list_view.dart" afterDir="false" />
|
|
||||||
<change afterPath="$PROJECT_DIR$/lib/src/channel_name_text.dart" afterDir="false" />
|
|
||||||
<change afterPath="$PROJECT_DIR$/lib/src/channel_preview.dart" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/example/lib/multiple_conversation.dart" beforeDir="false" afterPath="$PROJECT_DIR$/example/lib/multiple_conversation.dart" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/example/lib/single_conversation.dart" beforeDir="false" afterPath="$PROJECT_DIR$/example/lib/single_conversation.dart" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/example/lib/single_conversation.dart" beforeDir="false" afterPath="$PROJECT_DIR$/example/lib/single_conversation.dart" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/example/test/widget_test.dart" beforeDir="false" afterPath="$PROJECT_DIR$/example/test/widget_test.dart" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/example/test/widget_test.dart" beforeDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/lib/src/channel_list_view.dart" beforeDir="false" afterPath="$PROJECT_DIR$/lib/src/channel_list_view.dart" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/lib/src/channel_preview.dart" beforeDir="false" afterPath="$PROJECT_DIR$/lib/src/channel_preview.dart" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/lib/src/stream_channel.dart" beforeDir="false" afterPath="$PROJECT_DIR$/lib/src/stream_channel.dart" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/lib/src/stream_channel.dart" beforeDir="false" afterPath="$PROJECT_DIR$/lib/src/stream_channel.dart" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/lib/stream_chat_flutter.dart" beforeDir="false" afterPath="$PROJECT_DIR$/lib/stream_chat_flutter.dart" afterDir="false" />
|
|
||||||
</list>
|
</list>
|
||||||
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
@@ -25,15 +21,6 @@
|
|||||||
</component>
|
</component>
|
||||||
<component name="FileEditorManager">
|
<component name="FileEditorManager">
|
||||||
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
||||||
<file pinned="false" current-in-tab="false">
|
|
||||||
<entry file="file://$PROJECT_DIR$/analysis_options.yaml">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="799">
|
|
||||||
<caret line="47" column="28" selection-start-line="47" selection-start-column="28" selection-end-line="47" selection-end-column="28" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file pinned="false" current-in-tab="false">
|
<file pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/../stream_chat_dart/lib/src/client.dart">
|
<entry file="file://$PROJECT_DIR$/../stream_chat_dart/lib/src/client.dart">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
@@ -43,11 +30,11 @@
|
|||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
</file>
|
</file>
|
||||||
<file pinned="false" current-in-tab="true">
|
<file pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/lib/src/channel_list_view.dart">
|
<entry file="file://$PROJECT_DIR$/lib/src/channel_list_view.dart">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="890">
|
<state relative-caret-position="136">
|
||||||
<caret line="133" column="14" selection-start-line="133" selection-start-column="14" selection-end-line="133" selection-end-column="14" />
|
<caret line="8" column="26" selection-start-line="8" selection-start-column="8" selection-end-line="8" selection-end-column="26" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#39#0" expanded="true" />
|
<element signature="e#0#39#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
@@ -58,8 +45,8 @@
|
|||||||
<file pinned="false" current-in-tab="false">
|
<file pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/lib/src/channel_preview.dart">
|
<entry file="file://$PROJECT_DIR$/lib/src/channel_preview.dart">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="884">
|
<state relative-caret-position="782">
|
||||||
<caret line="52" column="40" selection-start-line="52" selection-start-column="40" selection-end-line="52" selection-end-column="40" />
|
<caret line="46" column="31" selection-start-line="46" selection-start-column="31" selection-end-line="46" selection-end-column="31" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#46#0" expanded="true" />
|
<element signature="e#0#46#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
@@ -70,8 +57,8 @@
|
|||||||
<file pinned="false" current-in-tab="false">
|
<file pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/lib/src/stream_chat.dart">
|
<entry file="file://$PROJECT_DIR$/lib/src/stream_chat.dart">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="238">
|
<state relative-caret-position="1309">
|
||||||
<caret line="14" column="25" selection-start-line="14" selection-start-column="25" selection-end-line="14" selection-end-column="25" />
|
<caret line="77" column="28" selection-start-line="77" selection-start-column="28" selection-end-line="77" selection-end-column="28" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#20#0" expanded="true" />
|
<element signature="e#0#20#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
@@ -80,10 +67,22 @@
|
|||||||
</entry>
|
</entry>
|
||||||
</file>
|
</file>
|
||||||
<file pinned="false" current-in-tab="false">
|
<file pinned="false" current-in-tab="false">
|
||||||
|
<entry file="file://$PROJECT_DIR$/lib/src/message_widget.dart">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="875">
|
||||||
|
<caret line="79" column="26" selection-start-line="79" selection-start-column="26" selection-end-line="79" selection-end-column="26" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#64#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file pinned="false" current-in-tab="true">
|
||||||
<entry file="file://$PROJECT_DIR$/lib/src/stream_channel.dart">
|
<entry file="file://$PROJECT_DIR$/lib/src/stream_channel.dart">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="1213">
|
<state relative-caret-position="170">
|
||||||
<caret line="102" selection-start-line="102" selection-end-line="102" />
|
<caret line="10" column="9" selection-start-line="10" selection-start-column="9" selection-end-line="10" selection-end-column="9" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#20#0" expanded="true" />
|
<element signature="e#0#20#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
@@ -103,8 +102,8 @@
|
|||||||
<file pinned="false" current-in-tab="false">
|
<file pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/lib/src/message_list_view.dart">
|
<entry file="file://$PROJECT_DIR$/lib/src/message_list_view.dart">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="874">
|
<state relative-caret-position="1230">
|
||||||
<caret line="207" column="30" selection-start-line="207" selection-start-column="30" selection-end-line="207" selection-end-column="30" />
|
<caret line="258" column="53" selection-start-line="258" selection-start-column="53" selection-end-line="258" selection-end-column="53" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#20#0" expanded="true" />
|
<element signature="e#0#20#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
@@ -147,6 +146,7 @@
|
|||||||
<find>dispose</find>
|
<find>dispose</find>
|
||||||
<find>CHANNEL-</find>
|
<find>CHANNEL-</find>
|
||||||
<find>_userController</find>
|
<find>_userController</find>
|
||||||
|
<find>onTap</find>
|
||||||
</findStrings>
|
</findStrings>
|
||||||
</component>
|
</component>
|
||||||
<component name="Git.Settings">
|
<component name="Git.Settings">
|
||||||
@@ -163,16 +163,16 @@
|
|||||||
<option value="$PROJECT_DIR$/lib/src/user_avatar.dart" />
|
<option value="$PROJECT_DIR$/lib/src/user_avatar.dart" />
|
||||||
<option value="$PROJECT_DIR$/lib/src/message_widget.dart" />
|
<option value="$PROJECT_DIR$/lib/src/message_widget.dart" />
|
||||||
<option value="$PROJECT_DIR$/lib/src/message_input.dart" />
|
<option value="$PROJECT_DIR$/lib/src/message_input.dart" />
|
||||||
<option value="$PROJECT_DIR$/lib/src/message_list_view.dart" />
|
|
||||||
<option value="$PROJECT_DIR$/example/lib/main.dart" />
|
<option value="$PROJECT_DIR$/example/lib/main.dart" />
|
||||||
<option value="$PROJECT_DIR$/lib/src/channel_image.dart" />
|
<option value="$PROJECT_DIR$/lib/src/channel_image.dart" />
|
||||||
<option value="$PROJECT_DIR$/lib/src/channel_preview.dart" />
|
|
||||||
<option value="$PROJECT_DIR$/lib/stream_chat_flutter.dart" />
|
<option value="$PROJECT_DIR$/lib/stream_chat_flutter.dart" />
|
||||||
<option value="$PROJECT_DIR$/lib/src/stream_channel.dart" />
|
|
||||||
<option value="$PROJECT_DIR$/example/lib/multiple_conversation.dart" />
|
|
||||||
<option value="$PROJECT_DIR$/example/lib/single_conversation.dart" />
|
<option value="$PROJECT_DIR$/example/lib/single_conversation.dart" />
|
||||||
<option value="$PROJECT_DIR$/lib/src/stream_chat.dart" />
|
<option value="$PROJECT_DIR$/lib/src/stream_chat.dart" />
|
||||||
|
<option value="$PROJECT_DIR$/lib/src/message_list_view.dart" />
|
||||||
|
<option value="$PROJECT_DIR$/lib/src/channel_preview.dart" />
|
||||||
<option value="$PROJECT_DIR$/lib/src/channel_list_view.dart" />
|
<option value="$PROJECT_DIR$/lib/src/channel_list_view.dart" />
|
||||||
|
<option value="$PROJECT_DIR$/example/lib/multiple_conversation.dart" />
|
||||||
|
<option value="$PROJECT_DIR$/lib/src/stream_channel.dart" />
|
||||||
</list>
|
</list>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
@@ -383,16 +383,6 @@
|
|||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/lib/src/message_widget.dart">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="875">
|
|
||||||
<caret line="79" column="26" selection-start-line="79" selection-start-column="26" selection-end-line="79" selection-end-column="26" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#0#64#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/lib/src/message_input.dart">
|
<entry file="file://$PROJECT_DIR$/lib/src/message_input.dart">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="119">
|
<state relative-caret-position="119">
|
||||||
@@ -448,26 +438,6 @@
|
|||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/lib/src/message_list_view.dart">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="874">
|
|
||||||
<caret line="207" column="30" selection-start-line="207" selection-start-column="30" selection-end-line="207" selection-end-column="30" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#0#20#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/lib/src/channel_preview.dart">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="884">
|
|
||||||
<caret line="52" column="40" selection-start-line="52" selection-start-column="40" selection-end-line="52" selection-end-column="40" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#0#46#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/../flutter/packages/flutter/lib/src/widgets/async.dart">
|
<entry file="file://$PROJECT_DIR$/../flutter/packages/flutter/lib/src/widgets/async.dart">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="580">
|
<state relative-caret-position="580">
|
||||||
@@ -475,16 +445,6 @@
|
|||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/lib/src/stream_channel.dart">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="1213">
|
|
||||||
<caret line="102" selection-start-line="102" selection-end-line="102" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#0#20#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/../stream_chat_dart/lib/src/client.dart">
|
<entry file="file://$PROJECT_DIR$/../stream_chat_dart/lib/src/client.dart">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="485">
|
<state relative-caret-position="485">
|
||||||
@@ -494,8 +454,28 @@
|
|||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/lib/src/stream_chat.dart">
|
<entry file="file://$PROJECT_DIR$/lib/src/stream_chat.dart">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="238">
|
<state relative-caret-position="1309">
|
||||||
<caret line="14" column="25" selection-start-line="14" selection-start-column="25" selection-end-line="14" selection-end-column="25" />
|
<caret line="77" column="28" selection-start-line="77" selection-start-column="28" selection-end-line="77" selection-end-column="28" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#20#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/lib/src/message_widget.dart">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="875">
|
||||||
|
<caret line="79" column="26" selection-start-line="79" selection-start-column="26" selection-end-line="79" selection-end-column="26" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#64#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/lib/src/message_list_view.dart">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="1230">
|
||||||
|
<caret line="258" column="53" selection-start-line="258" selection-start-column="53" selection-end-line="258" selection-end-column="53" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#20#0" expanded="true" />
|
<element signature="e#0#20#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
@@ -504,13 +484,33 @@
|
|||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/lib/src/channel_list_view.dart">
|
<entry file="file://$PROJECT_DIR$/lib/src/channel_list_view.dart">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="890">
|
<state relative-caret-position="136">
|
||||||
<caret line="133" column="14" selection-start-line="133" selection-start-column="14" selection-end-line="133" selection-end-column="14" />
|
<caret line="8" column="26" selection-start-line="8" selection-start-column="8" selection-end-line="8" selection-end-column="26" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#39#0" expanded="true" />
|
<element signature="e#0#39#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/lib/src/channel_preview.dart">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="782">
|
||||||
|
<caret line="46" column="31" selection-start-line="46" selection-start-column="31" selection-end-line="46" selection-end-column="31" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#46#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/lib/src/stream_channel.dart">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="170">
|
||||||
|
<caret line="10" column="9" selection-start-line="10" selection-start-column="9" selection-end-line="10" selection-end-column="9" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#20#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
||||||
@@ -9,27 +9,21 @@ void main() async {
|
|||||||
'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoid2lsZC1icmVlemUtNyJ9.VM2EX1EXOfgqa-bTH_3JzeY0T99ngWzWahSauP3dBMo',
|
'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoid2lsZC1icmVlemUtNyJ9.VM2EX1EXOfgqa-bTH_3JzeY0T99ngWzWahSauP3dBMo',
|
||||||
);
|
);
|
||||||
|
|
||||||
runApp(StreamChat(
|
final channelClient = client.channel('messaging', id: 'godevs');
|
||||||
client: client,
|
|
||||||
child: MyApp(),
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
class MyApp extends StatefulWidget {
|
channelClient.watch();
|
||||||
@override
|
|
||||||
_MyAppState createState() => _MyAppState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _MyAppState extends State<MyApp> {
|
runApp(
|
||||||
@override
|
StreamChat(
|
||||||
Widget build(BuildContext context) {
|
client: client,
|
||||||
return MaterialApp(
|
child: MaterialApp(
|
||||||
theme: ThemeData(
|
home: StreamChat(
|
||||||
primarySwatch: Colors.blue,
|
client: client,
|
||||||
|
child: ChannelListPage(),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
home: ChannelListPage(),
|
),
|
||||||
);
|
);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class ChannelListPage extends StatelessWidget {
|
class ChannelListPage extends StatelessWidget {
|
||||||
@@ -48,7 +42,10 @@ class ChannelListPage extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
onChannelTap: (channelClient) {
|
onChannelTap: (channelClient) {
|
||||||
Navigator.push(context, MaterialPageRoute(builder: (context) {
|
Navigator.push(context, MaterialPageRoute(builder: (context) {
|
||||||
return ChannelPage(channelClient);
|
return StreamChannel(
|
||||||
|
child: ChannelPage(),
|
||||||
|
channelClient: channelClient,
|
||||||
|
);
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
@@ -57,21 +54,20 @@ class ChannelListPage extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class ChannelPage extends StatelessWidget {
|
class ChannelPage extends StatelessWidget {
|
||||||
ChannelPage(this.channelClient);
|
const ChannelPage({
|
||||||
|
Key key,
|
||||||
final ChannelClient channelClient;
|
}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return StreamChannel(
|
return Scaffold(
|
||||||
channelClient: channelClient,
|
body: Column(
|
||||||
child: Scaffold(
|
children: <Widget>[
|
||||||
body: Column(
|
Expanded(
|
||||||
children: <Widget>[
|
child: MessageListView(),
|
||||||
Expanded(child: MessageListView()),
|
),
|
||||||
MessageInput(),
|
MessageInput(),
|
||||||
],
|
],
|
||||||
),
|
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,18 +19,29 @@ void main() async {
|
|||||||
client: client,
|
client: client,
|
||||||
child: StreamChannel(
|
child: StreamChannel(
|
||||||
channelClient: channelClient,
|
channelClient: channelClient,
|
||||||
child: Scaffold(
|
child: ChannelPage(),
|
||||||
body: Column(
|
|
||||||
children: <Widget>[
|
|
||||||
Expanded(
|
|
||||||
child: MessageListView(),
|
|
||||||
),
|
|
||||||
MessageInput(),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class ChannelPage extends StatelessWidget {
|
||||||
|
const ChannelPage({
|
||||||
|
Key key,
|
||||||
|
}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Scaffold(
|
||||||
|
body: Column(
|
||||||
|
children: <Widget>[
|
||||||
|
Expanded(
|
||||||
|
child: MessageListView(),
|
||||||
|
),
|
||||||
|
MessageInput(),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
// This is a basic Flutter widget test.
|
|
||||||
//
|
|
||||||
// To perform an interaction with a widget in your test, use the WidgetTester
|
|
||||||
// utility that Flutter provides. For example, you can send tap and scroll
|
|
||||||
// gestures. You can also use WidgetTester to find child widgets in the widget
|
|
||||||
// tree, read text, and verify that the values of widget properties are correct.
|
|
||||||
|
|
||||||
import 'package:example/single_conversation.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
|
||||||
|
|
||||||
void main() {
|
|
||||||
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
|
|
||||||
// Build our app and trigger a frame.
|
|
||||||
await tester.pumpWidget(MyApp());
|
|
||||||
|
|
||||||
// Verify that our counter starts at 0.
|
|
||||||
expect(find.text('0'), findsOneWidget);
|
|
||||||
expect(find.text('1'), findsNothing);
|
|
||||||
|
|
||||||
// Tap the '+' icon and trigger a frame.
|
|
||||||
await tester.tap(find.byIcon(Icons.add));
|
|
||||||
await tester.pump();
|
|
||||||
|
|
||||||
// Verify that our counter has incremented.
|
|
||||||
expect(find.text('0'), findsNothing);
|
|
||||||
expect(find.text('1'), findsOneWidget);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@@ -100,14 +100,15 @@ class _ChannelListViewState extends State<ChannelListView> {
|
|||||||
|
|
||||||
Widget child;
|
Widget child;
|
||||||
if (widget._channelPreviewBuilder != null) {
|
if (widget._channelPreviewBuilder != null) {
|
||||||
child = widget._channelPreviewBuilder(context, channelState);
|
child = GestureDetector(
|
||||||
|
onTap: () {
|
||||||
|
widget.onChannelTap(channelClient);
|
||||||
|
},
|
||||||
|
child: widget._channelPreviewBuilder(context, channelState),
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
child = ChannelPreview(
|
child = ChannelPreview(
|
||||||
onTap: widget?.onChannelTap != null
|
onTap: widget.onChannelTap,
|
||||||
? () {
|
|
||||||
widget?.onChannelTap(channelClient);
|
|
||||||
}
|
|
||||||
: null,
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,12 +4,13 @@ import 'package:flutter/widgets.dart';
|
|||||||
import 'package:stream_chat/stream_chat.dart';
|
import 'package:stream_chat/stream_chat.dart';
|
||||||
|
|
||||||
import 'channel_image.dart';
|
import 'channel_image.dart';
|
||||||
|
import 'channel_list_view.dart';
|
||||||
import 'channel_name_text.dart';
|
import 'channel_name_text.dart';
|
||||||
import 'stream_channel.dart';
|
import 'stream_channel.dart';
|
||||||
import 'stream_chat.dart';
|
import 'stream_chat.dart';
|
||||||
|
|
||||||
class ChannelPreview extends StatelessWidget {
|
class ChannelPreview extends StatelessWidget {
|
||||||
final VoidCallback onTap;
|
final ChannelTapCallback onTap;
|
||||||
|
|
||||||
const ChannelPreview({
|
const ChannelPreview({
|
||||||
Key key,
|
Key key,
|
||||||
@@ -37,14 +38,13 @@ class ChannelPreview extends StatelessWidget {
|
|||||||
ChannelState channelState,
|
ChannelState channelState,
|
||||||
StreamChannelState streamChannel,
|
StreamChannelState streamChannel,
|
||||||
) {
|
) {
|
||||||
|
final channelClient =
|
||||||
|
StreamChat.of(context).client.channelClients[channelState.channel.id];
|
||||||
return StreamChannel(
|
return StreamChannel(
|
||||||
channelClient:
|
channelClient: channelClient,
|
||||||
StreamChat.of(context).client.channelClients[channelState.channel.id],
|
|
||||||
child: ListTile(
|
child: ListTile(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
if (onTap != null) {
|
onTap(channelClient);
|
||||||
onTap();
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
leading: ChannelImage(
|
leading: ChannelImage(
|
||||||
channel: channelState.channel,
|
channel: channelState.channel,
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ class StreamChannel extends StatefulWidget {
|
|||||||
StreamChannel({
|
StreamChannel({
|
||||||
Key key,
|
Key key,
|
||||||
@required this.child,
|
@required this.child,
|
||||||
this.channelClient,
|
@required this.channelClient,
|
||||||
}) : super(
|
}) : super(
|
||||||
key: key,
|
key: key,
|
||||||
);
|
);
|
||||||
@@ -95,8 +95,6 @@ class StreamChannelState extends State<StreamChannel> {
|
|||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
_queryMessageController.close();
|
_queryMessageController.close();
|
||||||
widget.channelClient.dispose();
|
|
||||||
|
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -109,6 +107,7 @@ class StreamChannelState extends State<StreamChannel> {
|
|||||||
}
|
}
|
||||||
return FutureBuilder<bool>(
|
return FutureBuilder<bool>(
|
||||||
future: widget.channelClient.initialized,
|
future: widget.channelClient.initialized,
|
||||||
|
initialData: widget.channelClient.state != null,
|
||||||
builder: (context, snapshot) {
|
builder: (context, snapshot) {
|
||||||
if (!snapshot.hasData) {
|
if (!snapshot.hasData) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
|
|||||||
Reference in New Issue
Block a user