diff --git a/example/ios/dist/Runner.app.dSYM.zip b/example/ios/dist/Runner.app.dSYM.zip new file mode 100644 index 00000000..8ce4d3c7 Binary files /dev/null and b/example/ios/dist/Runner.app.dSYM.zip differ diff --git a/example/ios/dist/Runner.ipa b/example/ios/dist/Runner.ipa new file mode 100644 index 00000000..92283441 Binary files /dev/null and b/example/ios/dist/Runner.ipa differ diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 7b54db13..d52325a8 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -1,7 +1,7 @@ name: example description: A new Flutter project. -version: 1.0.8+9 +version: 1.0.10+11 environment: sdk: ">=2.2.2 <3.0.0" diff --git a/lib/src/back_button.dart b/lib/src/back_button.dart new file mode 100644 index 00000000..657a44ef --- /dev/null +++ b/lib/src/back_button.dart @@ -0,0 +1,44 @@ +import 'package:flutter/material.dart'; + +class StreamBackButton extends StatelessWidget { + const StreamBackButton({ + Key key, + this.onPressed, + this.icon = Icons.arrow_back_ios_outlined, + }) : super(key: key); + + final VoidCallback onPressed; + final IconData icon; + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.all(14.0), + child: RawMaterialButton( + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(4)), + elevation: 0, + highlightElevation: 0, + focusElevation: 0, + disabledElevation: 0, + hoverElevation: 0, + onPressed: () { + if (onPressed != null) { + onPressed(); + } else { + Navigator.of(context).pop(); + } + }, + fillColor: Theme.of(context).brightness == Brightness.dark + ? Colors.white.withOpacity(.1) + : Colors.black.withOpacity(.1), + child: Icon( + icon ?? Icons.arrow_back_ios_outlined, + size: 15, + color: Theme.of(context).brightness == Brightness.dark + ? Colors.white + : Colors.black, + ), + ), + ); + } +} diff --git a/lib/src/channel_header.dart b/lib/src/channel_header.dart index fbac80f1..8823a2db 100644 --- a/lib/src/channel_header.dart +++ b/lib/src/channel_header.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:jiffy/jiffy.dart'; import 'package:stream_chat/stream_chat.dart'; +import 'package:stream_chat_flutter/src/back_button.dart'; import 'package:stream_chat_flutter/src/channel_name.dart'; import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; @@ -78,7 +79,9 @@ class ChannelHeader extends StatelessWidget implements PreferredSizeWidget { final channel = StreamChannel.of(context).channel; return AppBar( elevation: 1, - leading: showBackButton ? _buildBackButton(context) : Container(), + leading: showBackButton + ? StreamBackButton(onPressed: onBackPressed) + : SizedBox(), backgroundColor: StreamChatTheme.of(context).channelTheme.channelHeaderTheme.color, actions: [ @@ -135,38 +138,6 @@ class ChannelHeader extends StatelessWidget implements PreferredSizeWidget { ); } - Padding _buildBackButton(BuildContext context) { - return Padding( - padding: const EdgeInsets.all(14.0), - child: RawMaterialButton( - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(4)), - elevation: 0, - highlightElevation: 0, - focusElevation: 0, - disabledElevation: 0, - hoverElevation: 0, - onPressed: () { - if (onBackPressed != null) { - onBackPressed(); - } else { - Navigator.of(context).pop(); - } - }, - fillColor: Theme.of(context).brightness == Brightness.dark - ? Colors.white.withOpacity(.1) - : Colors.black.withOpacity(.1), - padding: EdgeInsets.all(4), - child: Icon( - Icons.arrow_back_ios, - size: 15, - color: Theme.of(context).brightness == Brightness.dark - ? Colors.white - : Colors.black, - ), - ), - ); - } - @override final Size preferredSize; } diff --git a/lib/src/thread_header.dart b/lib/src/thread_header.dart index ebff1b02..9fba3e34 100644 --- a/lib/src/thread_header.dart +++ b/lib/src/thread_header.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:stream_chat/stream_chat.dart'; +import 'package:stream_chat_flutter/src/back_button.dart'; import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; /// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/screenshots/thread_header.png) @@ -80,7 +81,12 @@ class ThreadHeader extends StatelessWidget implements PreferredSizeWidget { StreamChatTheme.of(context).channelTheme.channelHeaderTheme.color, actions: [ Container( - child: showBackButton ? _buildBackButton(context) : Container(), + child: showBackButton + ? StreamBackButton( + onPressed: onBackPressed, + icon: Icons.close, + ) + : SizedBox(), ), ], centerTitle: false, @@ -104,38 +110,6 @@ class ThreadHeader extends StatelessWidget implements PreferredSizeWidget { ); } - Padding _buildBackButton(BuildContext context) { - return Padding( - padding: const EdgeInsets.all(14.0), - child: AspectRatio( - aspectRatio: 1, - child: RawMaterialButton( - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(4)), - elevation: 0, - highlightElevation: 0, - focusElevation: 0, - disabledElevation: 0, - hoverElevation: 0, - onPressed: () { - if (onBackPressed != null) { - onBackPressed(); - } else { - Navigator.of(context).pop(); - } - }, - fillColor: Theme.of(context).brightness == Brightness.dark - ? Colors.white.withOpacity(.1) - : Colors.black.withOpacity(.1), - padding: EdgeInsets.all(4), - child: Icon( - Icons.close, - size: 15, - ), - ), - ), - ); - } - @override final Size preferredSize; } diff --git a/lib/stream_chat_flutter.dart b/lib/stream_chat_flutter.dart index 3000a503..dffbd154 100644 --- a/lib/stream_chat_flutter.dart +++ b/lib/stream_chat_flutter.dart @@ -1,5 +1,6 @@ export 'package:stream_chat/stream_chat.dart'; +export 'src/back_button.dart'; export 'src/channel_header.dart'; export 'src/channel_image.dart'; export 'src/channel_list_view.dart';