From 9d05cd20e02b3506f8e42e1409a47b57c30392c7 Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Wed, 5 May 2021 17:23:30 +0530 Subject: [PATCH] lint --- .../lib/src/swipeable.dart | 109 +++++++------ .../lib/src/system_message.dart | 14 +- .../lib/src/thread_header.dart | 151 +++++++++--------- 3 files changed, 142 insertions(+), 132 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/swipeable.dart b/packages/stream_chat_flutter/lib/src/swipeable.dart index 3d195e4f..5895e8b5 100644 --- a/packages/stream_chat_flutter/lib/src/swipeable.dart +++ b/packages/stream_chat_flutter/lib/src/swipeable.dart @@ -1,27 +1,38 @@ import 'dart:math' as math; import 'package:flutter/material.dart'; +import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'stream_chat_theme.dart'; - -/// +/// Widget to make a swipeable tile class Swipeable extends StatefulWidget { - final Widget child; - final Widget backgroundIcon; - final VoidCallback? onSwipeStart; - final VoidCallback? onSwipeCancel; - final VoidCallback? onSwipeEnd; - final double threshold; - - /// + /// Constructor for creating a [Swipeable] widget const Swipeable({ + Key? key, required this.child, required this.backgroundIcon, this.onSwipeStart, this.onSwipeCancel, this.onSwipeEnd, this.threshold = 82.0, - }); + }) : super(key: key); + + /// Child to make swipeable + final Widget child; + + /// Background icon after swipe + final Widget backgroundIcon; + + /// Callback when swipe starts + final VoidCallback? onSwipeStart; + + /// Callback when swipe is cancelled + final VoidCallback? onSwipeCancel; + + /// Callback when swipe ends + final VoidCallback? onSwipeEnd; + + /// Threshold for swipe + final double threshold; @override State createState() => _SwipeableState(); @@ -45,10 +56,10 @@ class _SwipeableState extends State with TickerProviderStateMixin { AnimationController(duration: _animationDuration, vsync: this); _iconMoveController = AnimationController(duration: _animationDuration, vsync: this); - _moveAnimation = Tween(begin: Offset.zero, end: Offset(1, 0)) + _moveAnimation = Tween(begin: Offset.zero, end: const Offset(1, 0)) .animate(_moveController); _iconTransitionAnimation = - Tween(begin: Offset(-0.1, 0), end: Offset(0.4, 0)) + Tween(begin: const Offset(-0.1, 0), end: const Offset(0.4, 0)) .animate(_moveController); _iconFadeAnimation = Tween(begin: 0.7, end: 1).animate(_iconMoveController); @@ -120,44 +131,42 @@ class _SwipeableState extends State with TickerProviderStateMixin { } @override - Widget build(BuildContext context) { - return GestureDetector( - onHorizontalDragStart: _handleDragStart, - onHorizontalDragUpdate: _handleDragUpdate, - onHorizontalDragEnd: _handleDragEnd, - behavior: HitTestBehavior.opaque, - child: Stack( - alignment: Alignment.center, - fit: StackFit.passthrough, - children: [ - SlideTransition( - position: _iconTransitionAnimation, - child: Row( - children: [ - FadeTransition( - opacity: _iconFadeAnimation, - child: Container( - padding: const EdgeInsets.all(4), - decoration: BoxDecoration( - shape: BoxShape.circle, - border: Border.all( - color: StreamChatTheme.of(context) - .colorTheme - .greyGainsboro, + Widget build(BuildContext context) => GestureDetector( + onHorizontalDragStart: _handleDragStart, + onHorizontalDragUpdate: _handleDragUpdate, + onHorizontalDragEnd: _handleDragEnd, + behavior: HitTestBehavior.opaque, + child: Stack( + alignment: Alignment.center, + fit: StackFit.passthrough, + children: [ + SlideTransition( + position: _iconTransitionAnimation, + child: Row( + children: [ + FadeTransition( + opacity: _iconFadeAnimation, + child: Container( + padding: const EdgeInsets.all(4), + decoration: BoxDecoration( + shape: BoxShape.circle, + border: Border.all( + color: StreamChatTheme.of(context) + .colorTheme + .greyGainsboro, + ), ), + child: widget.backgroundIcon, ), - child: widget.backgroundIcon, ), - ), - ], + ], + ), ), - ), - SlideTransition( - position: _moveAnimation, - child: widget.child, - ), - ], - ), - ); - } + SlideTransition( + position: _moveAnimation, + child: widget.child, + ), + ], + ), + ); } diff --git a/packages/stream_chat_flutter/lib/src/system_message.dart b/packages/stream_chat_flutter/lib/src/system_message.dart index cdb9294f..b847eb3c 100644 --- a/packages/stream_chat_flutter/lib/src/system_message.dart +++ b/packages/stream_chat_flutter/lib/src/system_message.dart @@ -3,18 +3,20 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// It shows a date divider depending on the date difference class SystemMessage extends StatelessWidget { - /// This message - final Message message; - - /// The function called when tapping on the message when the message is not failed - final void Function(Message)? onMessageTap; - + /// Constructor for creating a [SystemMessage] const SystemMessage({ Key? key, required this.message, this.onMessageTap, }) : super(key: key); + /// This message + final Message message; + + // ignore: lines_longer_than_80_chars + /// The function called when tapping on the message when the message is not failed + final void Function(Message)? onMessageTap; + @override Widget build(BuildContext context) { final theme = StreamChatTheme.of(context); diff --git a/packages/stream_chat_flutter/lib/src/thread_header.dart b/packages/stream_chat_flutter/lib/src/thread_header.dart index 0157791e..ba94642f 100644 --- a/packages/stream_chat_flutter/lib/src/thread_header.dart +++ b/packages/stream_chat_flutter/lib/src/thread_header.dart @@ -3,9 +3,6 @@ import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; -import 'back_button.dart'; -import 'channel_name.dart'; - /// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/screenshots/thread_header.png) /// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/screenshots/thread_header_paint.png) /// @@ -46,16 +43,34 @@ import 'channel_name.dart'; /// Usually you would use this widget as an [AppBar] inside a [Scaffold]. /// However you can also use it as a normal widget. /// -/// Make sure to have a [StreamChannel] ancestor in order to provide the information about the channel. -/// Every part of the widget uses a [StreamBuilder] to render the channel information as soon as it updates. +/// Make sure to have a [StreamChannel] ancestor in order to provide the +/// information about the channel. +/// Every part of the widget uses a [StreamBuilder] to render the channel +/// information as soon as it updates. /// /// By default the widget shows a backButton that calls [Navigator.pop]. -/// You can disable this button using the [showBackButton] property of just override the behaviour +/// You can disable this button using the [showBackButton] property of just +/// override the behaviour /// with [onBackPressed]. /// -/// The widget components render the ui based on the first ancestor of type [StreamChatTheme] and on its [ChannelTheme.channelHeaderTheme] property. +/// The widget components render the ui based on the first ancestor of type +/// [StreamChatTheme] and on its [ChannelTheme.channelHeaderTheme] property. /// Modify it to change the widget appearance. class ThreadHeader extends StatelessWidget implements PreferredSizeWidget { + /// Instantiate a new ThreadHeader + const ThreadHeader({ + Key? key, + required this.parent, + this.showBackButton = true, + this.onBackPressed, + this.title, + this.subtitle, + this.leading, + this.actions, + this.onTitleTap, + }) : preferredSize = const Size.fromHeight(kToolbarHeight), + super(key: key); + /// True if this header shows the leading back button final bool showBackButton; @@ -81,82 +96,66 @@ class ThreadHeader extends StatelessWidget implements PreferredSizeWidget { /// AppBar actions final List? actions; - /// Instantiate a new ThreadHeader - ThreadHeader({ - Key? key, - required this.parent, - this.showBackButton = true, - this.onBackPressed, - this.title, - this.subtitle, - this.leading, - this.actions, - this.onTitleTap, - }) : preferredSize = Size.fromHeight(kToolbarHeight), - super(key: key); - @override - Widget build(BuildContext context) { - return AppBar( - automaticallyImplyLeading: false, - brightness: Theme.of(context).brightness, - elevation: 1, - leading: leading ?? - (showBackButton - ? StreamBackButton( - cid: StreamChannel.of(context).channel.cid, - onPressed: onBackPressed, - showUnreads: true, - ) - : SizedBox()), - backgroundColor: - StreamChatTheme.of(context).channelTheme.channelHeaderTheme.color, - centerTitle: true, - actions: actions, - title: InkWell( - onTap: onTitleTap, - child: Container( - height: preferredSize.height, - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - title ?? - Text( - 'Thread Reply', - style: StreamChatTheme.of(context) - .channelTheme - .channelHeaderTheme - .title, - ), - SizedBox(height: 2), - subtitle ?? - Row( - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text( - 'with ', - style: StreamChatTheme.of(context) - .channelTheme - .channelHeaderTheme - .subtitle, - ), - Flexible( - child: ChannelName( - textStyle: StreamChatTheme.of(context) + Widget build(BuildContext context) => AppBar( + automaticallyImplyLeading: false, + brightness: Theme.of(context).brightness, + elevation: 1, + leading: leading ?? + (showBackButton + ? StreamBackButton( + cid: StreamChannel.of(context).channel.cid, + onPressed: onBackPressed, + showUnreads: true, + ) + : const SizedBox()), + backgroundColor: + StreamChatTheme.of(context).channelTheme.channelHeaderTheme.color, + centerTitle: true, + actions: actions, + title: InkWell( + onTap: onTitleTap, + child: SizedBox( + height: preferredSize.height, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + title ?? + Text( + 'Thread Reply', + style: StreamChatTheme.of(context) + .channelTheme + .channelHeaderTheme + .title, + ), + const SizedBox(height: 2), + subtitle ?? + Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + 'with ', + style: StreamChatTheme.of(context) .channelTheme .channelHeaderTheme .subtitle, ), - ), - ], - ), - ], + Flexible( + child: ChannelName( + textStyle: StreamChatTheme.of(context) + .channelTheme + .channelHeaderTheme + .subtitle, + ), + ), + ], + ), + ], + ), ), ), - ), - ); - } + ); @override final Size preferredSize;