- import 'package:Capsule/components/custom_circle_avatar.dart';
- import 'package:Capsule/models/conversations.dart';
- import 'package:Capsule/models/friends.dart';
- import 'package:Capsule/utils/storage/conversations.dart';
- import 'package:Capsule/utils/strings.dart';
- import 'package:Capsule/views/main/conversation/detail.dart';
- import 'package:flutter/material.dart';
-
- class FriendListItem extends StatefulWidget{
- final Friend friend;
- const FriendListItem({
- Key? key,
- required this.friend,
- }) : super(key: key);
-
- @override
- _FriendListItemState createState() => _FriendListItemState();
- }
-
- class _FriendListItemState extends State<FriendListItem> {
-
- @override
- Widget build(BuildContext context) {
- return GestureDetector(
- behavior: HitTestBehavior.opaque,
- onTap: () { findOrCreateConversation(context); },
- child: Container(
- padding: const EdgeInsets.only(left: 16,right: 16,top: 0,bottom: 20),
- child: Row(
- children: <Widget>[
- Expanded(
- child: Row(
- children: <Widget>[
- CustomCircleAvatar(
- initials: widget.friend.username[0].toUpperCase(),
- ),
- const SizedBox(width: 16),
- Expanded(
- child: Align(
- alignment: Alignment.centerLeft,
- child: Container(
- color: Colors.transparent,
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: <Widget>[
- Text(widget.friend.username, style: const TextStyle(fontSize: 16)),
- ],
- ),
- ),
- ),
- ),
- ],
- ),
- ),
- ],
- ),
- ),
- );
- }
-
- Future<void> findOrCreateConversation(BuildContext context) async {
- Conversation? conversation = await getTwoUserConversation(widget.friend.friendId);
-
- conversation ??= await createConversation(
- generateRandomString(32),
- [ widget.friend ],
- true,
- );
-
- uploadConversation(conversation, context);
-
- Navigator.push(context, MaterialPageRoute(builder: (context){
- return ConversationDetail(
- conversation: conversation!,
- );
- }));
- }
- }
|