Skip to content

Instantly share code, notes, and snippets.

View sachaarbonel's full-sized avatar
👨‍💻
Uncovering bugs

Sacha Arbonel sachaarbonel

👨‍💻
Uncovering bugs
View GitHub Profile
@sachaarbonel
sachaarbonel / message_input.dart
Last active February 25, 2021 20:15
MessageInput
import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:image_picker/image_picker.dart';
import 'package:stream_chat_flutter/stream_chat_flutter.dart'
show Attachment, AttachmentFile, Message, MultipartFile, StreamChannel;
class MessageInput extends StatefulWidget {
const MessageInput({
Key key,
@sachaarbonel
sachaarbonel / chat_bubble.dart
Last active February 25, 2021 20:11
ChatBubble
class ChatBubble extends CustomPainter {
final Color color;
final Alignment alignment;
ChatBubble({
@required this.color,
this.alignment,
});
final _radius = 10.0;
@sachaarbonel
sachaarbonel / message_widget.dart
Last active February 25, 2021 20:10
MessageWidget
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/cupertino.dart';
import 'package:imessage/cutom_painter.dart';
import 'package:stream_chat_flutter/stream_chat_flutter.dart'
show Message;
class MessageWidget extends StatelessWidget {
final Alignment alignment;
final Message message;
final Color color;
@sachaarbonel
sachaarbonel / message_list_view.dart
Last active February 25, 2021 20:06
MessageListView
import 'package:collection/collection.dart';
import 'package:flutter/cupertino.dart';
import 'package:imessage/message_header.dart';
import 'package:imessage/message_input.dart';
import 'package:imessage/message_widget.dart';
import 'package:stream_chat_flutter/stream_chat_flutter.dart'
show Message, StreamChatCore;
class MessageListView extends StatelessWidget {
const MessageListView({Key key, this.messages}) : super(key: key);
@sachaarbonel
sachaarbonel / group_by.dart
Last active February 25, 2021 20:04
groupBy
import 'package:collection/collection.dart';
final entries = groupBy(messages.reversed,
(Message message) => message.createdAt.toString().substring(0, 10))
.entries
.toList();
@sachaarbonel
sachaarbonel / message_page.dart
Last active February 25, 2021 20:03
MessagePage no sdk
import 'package:imessage/channel_image.dart';
import 'package:imessage/channel_name_text.dart';
import 'package:imessage/message_list_view.dart';
class MessagePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar(
middle: Column(
@sachaarbonel
sachaarbonel / chat_loader.dart
Last active February 25, 2021 19:58
ChatLoader no sdk
class ChatLoader extends StatelessWidget {
const ChatLoader({
Key key,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return CupertinoPageScaffold(
child: CustomScrollView(
slivers: [
@sachaarbonel
sachaarbonel / channel_list_view.dart
Last active February 25, 2021 19:48
ChannelListView
import 'package:flutter/cupertino.dart';
import 'package:imessage/channel_preview.dart';
import 'package:imessage/message_page.dart';
import 'package:animations/animations.dart';
import 'package:stream_chat_flutter/stream_chat_flutter.dart'
show Channel, StreamChannel;
class ChannelListView extends StatelessWidget {
const ChannelListView({Key key, @required this.channels}) : super(key: key);
final List<Channel> channels;
@sachaarbonel
sachaarbonel / utils.dart
Last active February 25, 2021 19:44
utils.dart
import 'package:intl/intl.dart';
String formatDate(DateTime date) { // 21/01/20 3:31pm
final dateFormat = DateFormat.yMd().add_jm();
return dateFormat.format(date);
}
String formatDateSameWeek(DateTime date) {
DateFormat dateFormat;
if (date.day == DateTime.now().day) {
@sachaarbonel
sachaarbonel / channel_preview.dart
Last active February 25, 2021 19:39
ChannelPreview no SDK
import 'package:flutter/cupertino.dart';
import 'package:imessage/channel_image.dart';
import 'package:imessage/channel_name_text.dart';
import 'package:imessage/utils.dart';
import 'package:stream_chat_flutter/stream_chat_flutter.dart' show Channel;
import 'utils.dart';
class ChannelPreview extends StatelessWidget {
final VoidCallback onTap; // onTap is a callback in our widget that we'll be used later on for navigation purposes