This repository has been archived on 2026-05-22. You can view files and clone it, but cannot push or open issues or pull requests.
Files
ITCS-4155/lib/screens/chat.dart
2020-05-03 03:25:59 -04:00

101 lines
2.3 KiB
Dart

import 'package:flutter/material.dart';
import 'package:stream_chat_flutter/stream_chat_flutter.dart';
class _Chat {
final client = Client(
'xqf4gbfwu2ec',
logLevel: Level.INFO,
);
Future<Client> init() async {
await client.setGuestUser(
User(id: 'You'
),
);
final user = User(id: "carlos", extraData: {
"name": "John Doe",
});
await client.setUser(
user,
client.devToken("carlos"),
);
return client;
}
}
class Chat extends StatelessWidget {
final List sport;
Chat(this.sport);
@override
Widget build(BuildContext context) {
_Chat c = _Chat();
var x = c.init();
return Scaffold(
appBar: AppBar(
centerTitle: false,
title: Text('${sport[0]} Chat'),
backgroundColor: Colors.green,
),
body: FutureBuilder(
future: x,
builder: (context, snapshot){
if (!snapshot.hasData) {
return Center(child: CircularProgressIndicator());
} else {
return ContainerWithInterceptor(snapshot.data, sport[1]);
}
},
),
);
}
}
class ChannelPage extends StatelessWidget {
const ChannelPage({
Key key,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
Expanded(
child: MessageListView(
// messageBuilder: _messageBuilder,
),
),
MessageInput(),
],
);
}
}
class ContainerWithInterceptor extends StatefulWidget {
final Client client;
final int sport;
ContainerWithInterceptor(this.client, this.sport);
@override
State createState() => _ContainerWithInterceptorState();
}
class _ContainerWithInterceptorState extends State<ContainerWithInterceptor> {
Widget build(BuildContext context) {
var cc = widget.client.channel("messaging", id: "${widget.sport}");
print(widget.sport);
print("-------------------------------------------------------------");
cc.watch();
return StreamChat(
client: widget.client,
child: StreamChannel(
channel: cc,
child: ChannelPage(),
),
);
}
}