流式聊天Flutter应用程序没有显示我的频道



我的flutter应用程序有这段代码。该代码首先是为了显示允许用户输入用户名的页面,然后向他们显示我在流仪表板上创建的可用频道列表。不知怎的,用户可以用他们的用户名注册,但频道列表不会出现供他们交互。我已经在我的流仪表板上手动创建了频道。可能是什么问题?

这是整个序列的代码:


class MyHome extends StatelessWidget {
final TextEditingController _controller = TextEditingController();
final _formKey = GlobalKey<FormState>();
@override
Widget build(BuildContext context) {
final provider = Provider.of<ChatModel>(context);
return Scaffold(
appBar: AppBar(
title: Text("One Government FX Rooms"),
backgroundColor: Colors.white,
),
body: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Expanded(
child: Hero(
tag: 'logo',
child: Container(
width: 400.0,
child: Image.asset("assets/images/web-logo-250.png"),
),
),
),
Padding(
padding: EdgeInsets.only(bottom: 8.0, left: 15, right: 15),
child: CustomForm(
controller: _controller,
formKey: _formKey,
hintText: "Enter a username..",
),
),
Padding(
padding: EdgeInsets.only(bottom: 50.0),
child: CustomButton(
onPressed: () async {
if (_formKey.currentState.validate()) {
final user = _controller.value.text;
final client = provider.client;
await client.setUserWithProvider(
User(
id: "id_$user",
extraData: {
"name": "$user",
"image": "https://picsum.photos/100/100",
},
),
);
Navigator.of(context).pushReplacement(
MaterialPageRoute(
builder: (_) => StreamChat(
child: ChannelView(),
client: client,
),
),
);
}
},
text: "Submit",
),
),
],
),
);
}
}
class ChannelView extends StatelessWidget {
final TextEditingController _controller = TextEditingController();
final _formKey = GlobalKey<FormState>();
// ignore: deprecated_member_use
final channels = List<Channel>();
Future<List<Channel>> getChannels(StreamChatState state) async {
final filter = {
"type": "mobile",
};
final sort = [
SortOption(
"last_message_at",
direction: SortOption.DESC,
),
];
return await state.client.queryChannels(
filter: filter,
sort: sort,
);
}
@override
Widget build(BuildContext context) {
final streamchat = StreamChat.of(context);
final client = streamchat.client;
final provider = Provider.of<ChatModel>(context);
return Scaffold(
appBar: AppBar(
title: Text("Rooms"),
backgroundColor: Colors.white,
leading: Hero(
tag: 'logo',
child: Container(
child: Image.asset("assets/images/social-logo.png"),
),
),
),
body: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Expanded(
child: FutureBuilder(
future: getChannels(streamchat),
builder: (_, AsyncSnapshot<List<Channel>> snapshot) {
if (!snapshot.hasData) {
return Center(
child: CircularProgressIndicator(),
);
}
// clear list to avoid duplicates
channels.clear();
// repopulate list
channels.addAll(snapshot.data);
if (snapshot.data.length == 0) {
return Container();
}
return ListView(
scrollDirection: Axis.vertical,
children: createListOfChannels(snapshot.data, context),
);
},
),
),
Padding(
padding: EdgeInsets.only(bottom: 8.0, left: 15, right: 15),
child: CustomForm(
controller: _controller,
formKey: _formKey,
hintText: "Create a Room. Admins only!",
),
),
],
),
);
}
}
class ChatPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
final streamChannel = StreamChannel.of(context);
final channel = streamChannel.channel;
return Scaffold(
appBar: ChannelHeader(),
body: Column(
children: <Widget>[
Expanded(
child: MessageListView(
messageBuilder: (context, msg, idx) {
final msgReactionCount = msg.reactionCounts ?? {"like": 0};
return ListTile(
leading: Text("${msg.user.name}"),
title: Text("${msg.text}"),
subtitle: Text("${msg.createdAt.toIso8601String()}"),
trailing: Text("Likes: ${msgReactionCount["like"] ?? 0}"),
onTap: () async {
await channel.sendReaction(msg.id, "like");
},
);
},
),
),
MessageInput(),
],
),
);
}
}

我看到您正在筛选mobile频道类型。请确保您制作的通道使用的是该通道类型。您可以从资源管理器的面板中检查频道的类型。默认通道类型为消息传递

有关频道类型和预制类型的更多信息,请参阅此处:https://getstream.io/chat/docs/flutter-dart/channel_features/?language=dart

Flutter过滤文档:https://getstream.io/chat/docs/sdk/flutter/guides/understanding_filters/#filterequal

要检索所有通道并使其处于反应状态(实时(,您可以使用Stream的核心控制器来简化操作。StreamChannelListController可以很容易地检索频道并获得更新。这是来自stream_chat_flutter_core软件包。

以下是文档:https://getstream.io/chat/docs/sdk/flutter/stream_chat_flutter_core/stream_channel_list_controller/

以及预构建的UI组件,为您完成大部分任务:https://getstream.io/chat/docs/sdk/flutter/stream_chat_flutter/stream_channel_list_view/

这来自stream_chat_flutter软件包。您使用的软件包取决于您需要的定制级别。

最新更新