fix flutter analyze issues

This commit is contained in:
Salvatore Giordano
2021-02-02 12:15:54 +01:00
parent c89b54a65b
commit 47ccc0491a
27 changed files with 204 additions and 217 deletions
@@ -1,63 +1,63 @@
#include: package:pedantic/analysis_options.yaml include: package:pedantic/analysis_options.yaml
#
#analyzer: analyzer:
# enable-experiment: enable-experiment:
# - extension-methods - extension-methods
# exclude: exclude:
# - lib/**/*.g.dart - lib/**/*.g.dart
# - example/** - example/**
#
#linter: linter:
# rules: rules:
# # these rules are documented on and in the same order as # these rules are documented on and in the same order as
# # the Dart Lint rules page to make maintenance easier # the Dart Lint rules page to make maintenance easier
# # https://github.com/dart-lang/linter/blob/master/example/all.yaml # https://github.com/dart-lang/linter/blob/master/example/all.yaml
# # - always_declare_return_types # - always_declare_return_types
# # - always_specify_types # - always_specify_types
# # - annotate_overrides # - annotate_overrides
# # - avoid_as # - avoid_as
# - avoid_empty_else - avoid_empty_else
# - avoid_init_to_null - avoid_init_to_null
# - avoid_return_types_on_setters - avoid_return_types_on_setters
# - avoid_web_libraries_in_flutter - avoid_web_libraries_in_flutter
# - await_only_futures - await_only_futures
# - camel_case_types - camel_case_types
# - cancel_subscriptions - cancel_subscriptions
# - close_sinks - close_sinks
# # - comment_references # we do not presume as to what people want to reference in their dartdocs # - comment_references # we do not presume as to what people want to reference in their dartdocs
# # - constant_identifier_names # https://github.com/dart-lang/linter/issues/204 # - constant_identifier_names # https://github.com/dart-lang/linter/issues/204
# - control_flow_in_finally - control_flow_in_finally
# - empty_constructor_bodies - empty_constructor_bodies
# - empty_statements - empty_statements
# - hash_and_equals - hash_and_equals
# - implementation_imports - implementation_imports
# # - invariant_booleans # - invariant_booleans
# # - iterable_contains_unrelated_type # - iterable_contains_unrelated_type
# - library_names - library_names
# # - library_prefixes # - library_prefixes
# # - list_remove_unrelated_type # - list_remove_unrelated_type
# # - literal_only_boolean_expressions # - literal_only_boolean_expressions
# - non_constant_identifier_names - non_constant_identifier_names
# # - one_member_abstracts # - one_member_abstracts
# # - only_throw_errors # - only_throw_errors
# # - overridden_fields # - overridden_fields
## - package_api_docs # - package_api_docs
# - package_names - package_names
# - package_prefixed_library_names - package_prefixed_library_names
# - prefer_is_not_empty - prefer_is_not_empty
# # - prefer_mixin # https://github.com/dart-lang/language/issues/32 # - prefer_mixin # https://github.com/dart-lang/language/issues/32
# - public_member_api_docs - public_member_api_docs
# - slash_for_doc_comments - slash_for_doc_comments
# # - sort_constructors_first # - sort_constructors_first
# # - sort_unnamed_constructors_first # - sort_unnamed_constructors_first
# # - super_goes_last # no longer needed w/ Dart 2 # - super_goes_last # no longer needed w/ Dart 2
# - test_types_in_equals - test_types_in_equals
# - throw_in_finally - throw_in_finally
# # - type_annotate_public_apis # subset of always_specify_types # - type_annotate_public_apis # subset of always_specify_types
# - type_init_formals - type_init_formals
# # - unawaited_futures # - unawaited_futures
# - unnecessary_brace_in_string_interps - unnecessary_brace_in_string_interps
# - unnecessary_getters_setters - unnecessary_getters_setters
# - unnecessary_statements - unnecessary_statements
- unrelated_type_equality_checks - unrelated_type_equality_checks
- valid_regexps - valid_regexps
@@ -1,7 +1,6 @@
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:jiffy/jiffy.dart'; import 'package:jiffy/jiffy.dart';
import 'package:stream_chat_flutter/stream_chat_flutter.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart';
import 'main.dart'; import 'main.dart';
@@ -285,7 +284,7 @@ class _ChatInfoScreenState extends State<ChatInfoScreen> {
titleTextStyle: StreamChatTheme.of(context).textTheme.body, titleTextStyle: StreamChatTheme.of(context).textTheme.body,
leading: Padding( leading: Padding(
padding: const EdgeInsets.symmetric(horizontal: 22.0), padding: const EdgeInsets.symmetric(horizontal: 22.0),
child: StreamSvgIcon.Icon_group( child: StreamSvgIcon.iconGroup(
size: 24.0, size: 24.0,
color: color:
StreamChatTheme.of(context).colorTheme.black.withOpacity(0.5), StreamChatTheme.of(context).colorTheme.black.withOpacity(0.5),
@@ -213,7 +213,7 @@ class ChooseUserPage extends StatelessWidget {
.grey, .grey,
), ),
), ),
trailing: StreamSvgIcon.arrow_right( trailing: StreamSvgIcon.arrowRight(
color: StreamChatTheme.of(context) color: StreamChatTheme.of(context)
.colorTheme .colorTheme
.accentBlue, .accentBlue,
@@ -377,7 +377,7 @@ class _GroupInfoScreenState extends State<GroupInfoScreen> {
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
InkWell( InkWell(
child: StreamSvgIcon.close_small(), child: StreamSvgIcon.closeSmall(),
onTap: () { onTap: () {
setState(() { setState(() {
_nameController.text = _nameController.text =
@@ -739,7 +739,7 @@ class _GroupInfoScreenState extends State<GroupInfoScreen> {
), ),
SizedBox(width: 16.0), SizedBox(width: 16.0),
IconButton( IconButton(
icon: StreamSvgIcon.close_small( icon: StreamSvgIcon.closeSmall(
color: theme.colorTheme.grey, color: theme.colorTheme.grey,
), ),
constraints: BoxConstraints.tightFor( constraints: BoxConstraints.tightFor(
@@ -869,7 +869,7 @@ class _GroupInfoScreenState extends State<GroupInfoScreen> {
isUserAdmin) isUserAdmin)
_buildModalListTile( _buildModalListTile(
context, context,
StreamSvgIcon.Icon_user_settings( StreamSvgIcon.iconUserSettings(
color: StreamChatTheme.of(context).colorTheme.grey, color: StreamChatTheme.of(context).colorTheme.grey,
size: 24.0, size: 24.0,
), ),
@@ -891,7 +891,7 @@ class _GroupInfoScreenState extends State<GroupInfoScreen> {
}, color: StreamChatTheme.of(context).colorTheme.accentRed), }, color: StreamChatTheme.of(context).colorTheme.accentRed),
_buildModalListTile( _buildModalListTile(
context, context,
StreamSvgIcon.close_small( StreamSvgIcon.closeSmall(
color: StreamChatTheme.of(context).colorTheme.grey, color: StreamChatTheme.of(context).colorTheme.grey,
size: 24.0, size: 24.0,
), ),
@@ -294,7 +294,7 @@ class _HomePageState extends State<HomePage> {
), ),
), ),
trailing: IconButton( trailing: IconButton(
icon: StreamSvgIcon.Icon_moon( icon: StreamSvgIcon.iconMoon(
size: 24, size: 24,
), ),
color: StreamChatTheme.of(context).colorTheme.grey, color: StreamChatTheme.of(context).colorTheme.grey,
@@ -67,7 +67,7 @@ class _NewGroupChatScreenState extends State<NewGroupChatScreen> {
actions: [ actions: [
if (_selectedUsers.isNotEmpty) if (_selectedUsers.isNotEmpty)
IconButton( IconButton(
icon: StreamSvgIcon.arrow_right( icon: StreamSvgIcon.arrowRight(
color: StreamChatTheme.of(context).colorTheme.accentBlue, color: StreamChatTheme.of(context).colorTheme.accentBlue,
), ),
onPressed: () async { onPressed: () async {
@@ -71,7 +71,7 @@ class SearchTextField extends StatelessWidget {
color: Colors.transparent, color: Colors.transparent,
child: IconButton( child: IconButton(
padding: const EdgeInsets.all(0), padding: const EdgeInsets.all(0),
icon: StreamSvgIcon.close_small( icon: StreamSvgIcon.closeSmall(
color: Colors.grey, color: Colors.grey,
), ),
splashRadius: 24, splashRadius: 24,
@@ -195,7 +195,7 @@ class _ChannelBottomSheetState extends State<ChannelBottomSheet> {
OptionListTile( OptionListTile(
leading: Padding( leading: Padding(
padding: const EdgeInsets.symmetric(horizontal: 16.0), padding: const EdgeInsets.symmetric(horizontal: 16.0),
child: StreamSvgIcon.close_small( child: StreamSvgIcon.closeSmall(
color: StreamChatTheme.of(context).colorTheme.grey, color: StreamChatTheme.of(context).colorTheme.grey,
), ),
), ),
@@ -89,8 +89,8 @@ class ChannelHeader extends StatelessWidget implements PreferredSizeWidget {
return ConnectionStatusBuilder( return ConnectionStatusBuilder(
statusBuilder: (context, status) { statusBuilder: (context, status) {
String statusString = ''; var statusString = '';
bool showStatus = true; var showStatus = true;
switch (status) { switch (status) {
case ConnectionStatus.connected: case ConnectionStatus.connected:
@@ -82,8 +82,8 @@ class ChannelListHeader extends StatelessWidget implements PreferredSizeWidget {
final user = _client.state.user; final user = _client.state.user;
return ConnectionStatusBuilder( return ConnectionStatusBuilder(
statusBuilder: (context, status) { statusBuilder: (context, status) {
String statusString = ''; var statusString = '';
bool showStatus = true; var showStatus = true;
switch (status) { switch (status) {
case ConnectionStatus.connected: case ConnectionStatus.connected:
@@ -1,8 +1,8 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:jiffy/jiffy.dart'; import 'package:jiffy/jiffy.dart';
import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart';
import 'package:stream_chat_flutter/src/stream_svg_icon.dart'; import 'package:stream_chat_flutter/src/stream_svg_icon.dart';
import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart';
import '../stream_chat_flutter.dart'; import '../stream_chat_flutter.dart';
import 'channel_name.dart'; import 'channel_name.dart';
@@ -269,7 +269,7 @@ class ChannelPreview extends StatelessWidget {
TextStyle normalTextStyle, TextStyle normalTextStyle,
TextStyle mentionsTextStyle) { TextStyle mentionsTextStyle) {
var textList = text.split(' '); var textList = text.split(' ');
List<TextSpan> resList = []; var resList = <TextSpan>[];
for (var e in textList) { for (var e in textList) {
if (mentions != null && if (mentions != null &&
mentions.isNotEmpty && mentions.isNotEmpty &&
@@ -1,18 +1,20 @@
import 'package:emojis/emoji.dart';
import 'package:characters/characters.dart'; import 'package:characters/characters.dart';
import 'package:emojis/emoji.dart';
final _emojis = Emoji.all(); final _emojis = Emoji.all();
/// String extension
extension StringExtension on String { extension StringExtension on String {
/// Returns the capitalized string
String capitalize() { String capitalize() {
return "${this[0].toUpperCase()}${this.substring(1)}"; return '${this[0].toUpperCase()}${substring(1)}';
} }
// Emojis guidelines // Emojis guidelines
// 1 to 3 emojis: big size with no text bubble. // 1 to 3 emojis: big size with no text bubble.
// 4+ emojis or emojis+text: standard size with text bubble. // 4+ emojis or emojis+text: standard size with text bubble.
bool get isOnlyEmoji { bool get isOnlyEmoji {
final characters = this.trim().characters; final characters = trim().characters;
if (characters.isEmpty) return false; if (characters.isEmpty) return false;
if (characters.length > 3) return false; if (characters.length > 3) return false;
return characters.every((c) => _emojis.map((e) => e.char).contains(c)); return characters.every((c) => _emojis.map((e) => e.char).contains(c));
@@ -3,10 +3,10 @@ import 'dart:io';
import 'package:cached_network_image/cached_network_image.dart'; import 'package:cached_network_image/cached_network_image.dart';
import 'package:file_picker/file_picker.dart'; import 'package:file_picker/file_picker.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart';
import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; import 'package:stream_chat_flutter/src/stream_chat_theme.dart';
import 'package:stream_chat_flutter/src/stream_svg_icon.dart'; import 'package:stream_chat_flutter/src/stream_svg_icon.dart';
import 'package:stream_chat_flutter/src/utils.dart'; import 'package:stream_chat_flutter/src/utils.dart';
import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart';
import 'package:video_compress/video_compress.dart'; import 'package:video_compress/video_compress.dart';
import 'package:video_player/video_player.dart'; import 'package:video_player/video_player.dart';
@@ -110,7 +110,7 @@ class _FileAttachmentState extends State<FileAttachment> {
type: MaterialType.transparency, type: MaterialType.transparency,
child: widget.trailing ?? child: widget.trailing ??
IconButton( IconButton(
icon: StreamSvgIcon.cloud_download( icon: StreamSvgIcon.cloudDownload(
color: StreamChatTheme.of(context).colorTheme.black, color: StreamChatTheme.of(context).colorTheme.black,
), ),
padding: const EdgeInsets.all(8), padding: const EdgeInsets.all(8),
@@ -258,9 +258,9 @@ class VideoPackage {
_videoPlayerController.addListener(errorListener); _videoPlayerController.addListener(errorListener);
} }
get videoPlayer => _videoPlayerController; VideoPlayerController get videoPlayer => _videoPlayerController;
get chewieController => _chewieController; ChewieController get chewieController => _chewieController;
void dispose() { void dispose() {
_videoPlayerController.dispose(); _videoPlayerController.dispose();
@@ -56,7 +56,7 @@ class ImageActionsModal extends StatelessWidget {
_buildButton( _buildButton(
context, context,
'Reply', 'Reply',
StreamSvgIcon.Icon_curve_line_left_up( StreamSvgIcon.iconCurveLineLeftUp(
size: 24.0, size: 24.0,
color: StreamChatTheme.of(context).colorTheme.grey, color: StreamChatTheme.of(context).colorTheme.grey,
), ),
@@ -76,7 +76,7 @@ class ImageActionsModal extends StatelessWidget {
_buildButton( _buildButton(
context, context,
'Save ${urls[currentIndex].type == 'video' ? 'Video' : 'Image'}', 'Save ${urls[currentIndex].type == 'video' ? 'Video' : 'Image'}',
StreamSvgIcon.Icon_save( StreamSvgIcon.iconSave(
size: 24.0, size: 24.0,
color: StreamChatTheme.of(context).colorTheme.grey, color: StreamChatTheme.of(context).colorTheme.grey,
), ),
@@ -167,14 +167,14 @@ class ImageActionsModal extends StatelessWidget {
final result = await ImageGallerySaver.saveImage( final result = await ImageGallerySaver.saveImage(
Uint8List.fromList(response.data), Uint8List.fromList(response.data),
quality: 60, quality: 60,
name: "${DateTime.now().millisecondsSinceEpoch}"); name: '${DateTime.now().millisecondsSinceEpoch}');
return result; return result;
} }
Future<void> _saveVideo(String url) async { Future<void> _saveVideo(String url) async {
var appDocDir = await getTemporaryDirectory(); var appDocDir = await getTemporaryDirectory();
var savePath = var savePath =
appDocDir.path + "/${DateTime.now().millisecondsSinceEpoch}.mp4"; appDocDir.path + '/${DateTime.now().millisecondsSinceEpoch}.mp4';
await Dio().download(url, savePath); await Dio().download(url, savePath);
final result = await ImageGallerySaver.saveFile(savePath); final result = await ImageGallerySaver.saveFile(savePath);
print(result); print(result);
@@ -7,9 +7,9 @@ import 'package:dio/dio.dart';
import 'package:esys_flutter_share/esys_flutter_share.dart'; import 'package:esys_flutter_share/esys_flutter_share.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart';
import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; import 'package:stream_chat_flutter/src/stream_chat_theme.dart';
import 'package:stream_chat_flutter/stream_chat_flutter.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart';
import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart';
class ImageFooter extends StatefulWidget implements PreferredSizeWidget { class ImageFooter extends StatefulWidget implements PreferredSizeWidget {
/// Callback to call when pressing the back button. /// Callback to call when pressing the back button.
@@ -54,36 +54,17 @@ class ImageFooter extends StatefulWidget implements PreferredSizeWidget {
} }
class _ImageFooterState extends State<ImageFooter> { class _ImageFooterState extends State<ImageFooter> {
//ignore:unused_field
bool _userSearchMode = false;
TextEditingController _searchController; TextEditingController _searchController;
final TextEditingController _messageController = TextEditingController(); final TextEditingController _messageController = TextEditingController();
final FocusNode _messageFocusNode = FocusNode(); final FocusNode _messageFocusNode = FocusNode();
//ignore:unused_field
String _channelNameQuery;
final List<Channel> _selectedChannels = []; final List<Channel> _selectedChannels = [];
Timer _debounce;
Function modalSetStateCallback; Function modalSetStateCallback;
void _userNameListener() {
if (_debounce?.isActive ?? false) _debounce.cancel();
_debounce = Timer(const Duration(milliseconds: 350), () {
if (mounted && modalSetStateCallback != null) {
modalSetStateCallback(() {
_channelNameQuery = _searchController.text;
});
}
});
}
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_searchController = TextEditingController()..addListener(_userNameListener);
_messageFocusNode.addListener(() { _messageFocusNode.addListener(() {
setState(() {}); setState(() {});
}); });
@@ -92,7 +73,6 @@ class _ImageFooterState extends State<ImageFooter> {
@override @override
void dispose() { void dispose() {
_searchController?.clear(); _searchController?.clear();
_searchController?.removeListener(_userNameListener);
_searchController?.dispose(); _searchController?.dispose();
super.dispose(); super.dispose();
} }
@@ -113,7 +93,7 @@ class _ImageFooterState extends State<ImageFooter> {
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
IconButton( IconButton(
icon: StreamSvgIcon.Icon_SHARE( icon: StreamSvgIcon.iconShare(
size: 24.0, size: 24.0,
color: StreamChatTheme.of(context).colorTheme.black, color: StreamChatTheme.of(context).colorTheme.black,
), ),
@@ -151,7 +131,7 @@ class _ImageFooterState extends State<ImageFooter> {
), ),
), ),
IconButton( IconButton(
icon: StreamSvgIcon.Icon_grid( icon: StreamSvgIcon.iconGrid(
color: StreamChatTheme.of(context).colorTheme.black, color: StreamChatTheme.of(context).colorTheme.black,
), ),
onPressed: () => _showPhotosModal(context), onPressed: () => _showPhotosModal(context),
@@ -174,9 +154,9 @@ class _ImageFooterState extends State<ImageFooter> {
backgroundColor: StreamChatTheme.of(context).colorTheme.white, backgroundColor: StreamChatTheme.of(context).colorTheme.white,
isScrollControlled: true, isScrollControlled: true,
shape: const RoundedRectangleBorder( shape: const RoundedRectangleBorder(
borderRadius: const BorderRadius.only( borderRadius: BorderRadius.only(
topLeft: const Radius.circular(16.0), topLeft: Radius.circular(16.0),
topRight: const Radius.circular(16.0), topRight: Radius.circular(16.0),
), ),
), ),
builder: (context) { builder: (context) {
@@ -1,7 +1,8 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart';
import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; import 'package:stream_chat_flutter/src/stream_chat_theme.dart';
import 'package:stream_chat_flutter/src/stream_svg_icon.dart'; import 'package:stream_chat_flutter/src/stream_svg_icon.dart';
import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart';
import 'image_actions_modal.dart'; import 'image_actions_modal.dart';
class ImageHeader extends StatelessWidget implements PreferredSizeWidget { class ImageHeader extends StatelessWidget implements PreferredSizeWidget {
@@ -63,7 +64,7 @@ class ImageHeader extends StatelessWidget implements PreferredSizeWidget {
StreamChatTheme.of(context).channelTheme.channelHeaderTheme.color, StreamChatTheme.of(context).channelTheme.channelHeaderTheme.color,
actions: <Widget>[ actions: <Widget>[
IconButton( IconButton(
icon: StreamSvgIcon.Icon_menu_point_v( icon: StreamSvgIcon.iconMenuPoint(
color: StreamChatTheme.of(context).colorTheme.black, color: StreamChatTheme.of(context).colorTheme.black,
), ),
onPressed: () { onPressed: () {
@@ -1,14 +1,14 @@
import 'package:http_parser/http_parser.dart' as httpParser; import 'package:http_parser/http_parser.dart' as http_parser;
import 'package:mime/mime.dart'; import 'package:mime/mime.dart';
class MediaUtils { class MediaUtils {
static httpParser.MediaType getMimeType(String filename) { static http_parser.MediaType getMimeType(String filename) {
httpParser.MediaType mimeType; http_parser.MediaType mimeType;
if (filename != null) { if (filename != null) {
if (filename.toLowerCase().endsWith('heic')) { if (filename.toLowerCase().endsWith('heic')) {
mimeType = httpParser.MediaType.parse('image/heic'); mimeType = http_parser.MediaType.parse('image/heic');
} else { } else {
mimeType = httpParser.MediaType.parse(lookupMimeType(filename)); mimeType = http_parser.MediaType.parse(lookupMimeType(filename));
} }
} }
@@ -4,16 +4,16 @@ import 'dart:ui';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart';
import 'package:stream_chat_flutter/src/reaction_picker.dart'; import 'package:stream_chat_flutter/src/reaction_picker.dart';
import 'package:stream_chat_flutter/src/stream_svg_icon.dart'; import 'package:stream_chat_flutter/src/stream_svg_icon.dart';
import 'package:stream_chat_flutter/src/utils.dart'; import 'package:stream_chat_flutter/src/utils.dart';
import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart';
import 'extension.dart';
import 'message_input.dart'; import 'message_input.dart';
import 'message_widget.dart'; import 'message_widget.dart';
import 'stream_chat.dart'; import 'stream_chat.dart';
import 'stream_chat_theme.dart'; import 'stream_chat_theme.dart';
import 'extension.dart';
class MessageActionsModal extends StatefulWidget { class MessageActionsModal extends StatefulWidget {
final Widget Function(BuildContext, Message) editMessageInputBuilder; final Widget Function(BuildContext, Message) editMessageInputBuilder;
@@ -280,20 +280,22 @@ class _MessageActionsModalState extends State<MessageActionsModal> {
setState(() { setState(() {
_showActions = false; _showActions = false;
}); });
var answer = await showConfirmationDialog(context, var answer = await showConfirmationDialog(
title: 'Delete message', context,
icon: StreamSvgIcon.flag( title: 'Delete message',
color: StreamChatTheme.of(context).colorTheme.accentRed, icon: StreamSvgIcon.flag(
size: 24.0, color: StreamChatTheme.of(context).colorTheme.accentRed,
), size: 24.0,
question: 'Are you sure you want to permanently delete this\nmessage?', ),
okText: 'DELETE', question: 'Are you sure you want to permanently delete this\nmessage?',
cancelText: 'CANCEL'); okText: 'DELETE',
cancelText: 'CANCEL',
);
if (answer) { if (answer) {
try { try {
Navigator.pop(context); Navigator.pop(context);
StreamChat.of(context).client.deleteMessage( await StreamChat.of(context).client.deleteMessage(
widget.message, widget.message,
StreamChannel.of(context).channel.cid, StreamChannel.of(context).channel.cid,
); );
@@ -470,7 +472,7 @@ class _MessageActionsModalState extends State<MessageActionsModal> {
padding: const EdgeInsets.symmetric(vertical: 11.0, horizontal: 16.0), padding: const EdgeInsets.symmetric(vertical: 11.0, horizontal: 16.0),
child: Row( child: Row(
children: [ children: [
StreamSvgIcon.icon_flag( StreamSvgIcon.iconFlag(
color: StreamChatTheme.of(context).primaryIconTheme.color, color: StreamChatTheme.of(context).primaryIconTheme.color,
), ),
const SizedBox(width: 16), const SizedBox(width: 16),
@@ -577,7 +579,7 @@ class _MessageActionsModalState extends State<MessageActionsModal> {
padding: const EdgeInsets.symmetric(vertical: 11.0, horizontal: 16.0), padding: const EdgeInsets.symmetric(vertical: 11.0, horizontal: 16.0),
child: Row( child: Row(
children: [ children: [
StreamSvgIcon.circle_up( StreamSvgIcon.circleUp(
color: StreamChatTheme.of(context).colorTheme.accentBlue, color: StreamChatTheme.of(context).colorTheme.accentBlue,
), ),
const SizedBox(width: 16), const SizedBox(width: 16),
@@ -632,7 +634,7 @@ class _MessageActionsModalState extends State<MessageActionsModal> {
), ),
IconButton( IconButton(
visualDensity: VisualDensity.compact, visualDensity: VisualDensity.compact,
icon: StreamSvgIcon.close_small(), icon: StreamSvgIcon.closeSmall(),
onPressed: Navigator.of(context).pop, onPressed: Navigator.of(context).pop,
), ),
], ],
@@ -9,7 +9,7 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_keyboard_visibility/flutter_keyboard_visibility.dart'; import 'package:flutter_keyboard_visibility/flutter_keyboard_visibility.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:http_parser/http_parser.dart' as httpParser; import 'package:http_parser/http_parser.dart' as http_parser;
import 'package:image_picker/image_picker.dart'; import 'package:image_picker/image_picker.dart';
import 'package:mime/mime.dart'; import 'package:mime/mime.dart';
import 'package:photo_manager/photo_manager.dart'; import 'package:photo_manager/photo_manager.dart';
@@ -202,7 +202,7 @@ class MessageInputState extends State<MessageInput> {
bool _openFilePickerSection = false; bool _openFilePickerSection = false;
int _filePickerIndex = 0; int _filePickerIndex = 0;
double _filePickerSize = _kMinMediaPickerSize; double _filePickerSize = _kMinMediaPickerSize;
KeyboardVisibilityController _keyboardVisibilityController = final KeyboardVisibilityController _keyboardVisibilityController =
KeyboardVisibilityController(); KeyboardVisibilityController();
/// The editing controller passed to the input TextField /// The editing controller passed to the input TextField
@@ -247,7 +247,7 @@ class MessageInputState extends State<MessageInput> {
), ),
IconButton( IconButton(
visualDensity: VisualDensity.compact, visualDensity: VisualDensity.compact,
icon: StreamSvgIcon.close_small(), icon: StreamSvgIcon.closeSmall(),
onPressed: widget.onQuotedMessageCleared, onPressed: widget.onQuotedMessageCleared,
), ),
], ],
@@ -493,7 +493,7 @@ class MessageInputState extends State<MessageInput> {
: null, : null,
suffixIcon: _commandEnabled suffixIcon: _commandEnabled
? IconButton( ? IconButton(
icon: StreamSvgIcon.close_small(), icon: StreamSvgIcon.closeSmall(),
splashRadius: 24, splashRadius: 24,
padding: const EdgeInsets.all(0), padding: const EdgeInsets.all(0),
constraints: BoxConstraints.tightFor( constraints: BoxConstraints.tightFor(
@@ -1128,7 +1128,7 @@ class MessageInputState extends State<MessageInput> {
case 'ban': case 'ban':
return CircleAvatar( return CircleAvatar(
backgroundColor: StreamChatTheme.of(context).colorTheme.accentBlue, backgroundColor: StreamChatTheme.of(context).colorTheme.accentBlue,
child: StreamSvgIcon.Icon_user_delete( child: StreamSvgIcon.iconUserDelete(
size: 16.0, size: 16.0,
color: Colors.white, color: Colors.white,
), ),
@@ -1964,7 +1964,7 @@ class MessageInputState extends State<MessageInput> {
final mimeType = _getMimeType(file.path.split('/').last); final mimeType = _getMimeType(file.path.split('/').last);
Map<String, dynamic> extraDataMap = {}; var extraDataMap = <String, dynamic>{};
if (camera) { if (camera) {
if (mimeType.type == 'video' || mimeType.type == 'image') { if (mimeType.type == 'video' || mimeType.type == 'image') {
@@ -2074,13 +2074,13 @@ class MessageInputState extends State<MessageInput> {
return res.file; return res.file;
} }
httpParser.MediaType _getMimeType(String filename) { http_parser.MediaType _getMimeType(String filename) {
httpParser.MediaType mimeType; http_parser.MediaType mimeType;
if (filename != null) { if (filename != null) {
if (filename.toLowerCase().endsWith('heic')) { if (filename.toLowerCase().endsWith('heic')) {
mimeType = httpParser.MediaType.parse('image/heic'); mimeType = http_parser.MediaType.parse('image/heic');
} else { } else {
mimeType = httpParser.MediaType.parse(lookupMimeType(filename)); mimeType = http_parser.MediaType.parse(lookupMimeType(filename));
} }
} }
@@ -6,18 +6,18 @@ import 'package:flutter/material.dart';
import 'package:jiffy/jiffy.dart'; import 'package:jiffy/jiffy.dart';
import 'package:rxdart/rxdart.dart'; import 'package:rxdart/rxdart.dart';
import 'package:scrollable_positioned_list/scrollable_positioned_list.dart'; import 'package:scrollable_positioned_list/scrollable_positioned_list.dart';
import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart';
import 'package:stream_chat_flutter/src/info_tile.dart'; import 'package:stream_chat_flutter/src/info_tile.dart';
import 'package:stream_chat_flutter/src/message_widget.dart'; import 'package:stream_chat_flutter/src/message_widget.dart';
import 'package:stream_chat_flutter/src/stream_svg_icon.dart'; import 'package:stream_chat_flutter/src/stream_svg_icon.dart';
import 'package:stream_chat_flutter/src/system_message.dart'; import 'package:stream_chat_flutter/src/system_message.dart';
import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart';
import 'package:visibility_detector/visibility_detector.dart'; import 'package:visibility_detector/visibility_detector.dart';
import '../stream_chat_flutter.dart'; import '../stream_chat_flutter.dart';
import 'connection_status_builder.dart'; import 'connection_status_builder.dart';
import 'date_divider.dart'; import 'date_divider.dart';
import 'swipeable.dart';
import 'extension.dart'; import 'extension.dart';
import 'swipeable.dart';
typedef MessageBuilder = Widget Function( typedef MessageBuilder = Widget Function(
BuildContext, BuildContext,
@@ -237,7 +237,7 @@ class _MessageListViewState extends State<MessageListView> {
bool _inBetweenList = false; bool _inBetweenList = false;
MessageListController _messageListController = MessageListController(); final MessageListController _messageListController = MessageListController();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@@ -308,8 +308,8 @@ class _MessageListViewState extends State<MessageListView> {
children: [ children: [
ConnectionStatusBuilder( ConnectionStatusBuilder(
statusBuilder: (context, status) { statusBuilder: (context, status) {
String statusString = ''; var statusString = '';
bool showStatus = true; var showStatus = true;
switch (status) { switch (status) {
case ConnectionStatus.connected: case ConnectionStatus.connected:
statusString = 'Connected'; statusString = 'Connected';
@@ -878,7 +878,7 @@ class _MessageListViewState extends State<MessageListView> {
if (messages.map((e) => e.id).contains(quotedMessageId)) { if (messages.map((e) => e.id).contains(quotedMessageId)) {
scrollToIndex(); scrollToIndex();
} else { } else {
streamChannel.loadChannelAtMessage(quotedMessageId).then((_) { await streamChannel.loadChannelAtMessage(quotedMessageId).then((_) {
WidgetsBinding.instance.addPostFrameCallback((_) { WidgetsBinding.instance.addPostFrameCallback((_) {
if (messages.map((e) => e.id).contains(quotedMessageId)) { if (messages.map((e) => e.id).contains(quotedMessageId)) {
scrollToIndex(); scrollToIndex();
@@ -1,7 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:jiffy/jiffy.dart'; import 'package:jiffy/jiffy.dart';
import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart';
import 'package:stream_chat_flutter/stream_chat_flutter.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart';
import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart';
/// It shows the current [Message] preview. /// It shows the current [Message] preview.
/// ///
@@ -152,7 +152,7 @@ class MessageSearchItem extends StatelessWidget {
TextStyle normalTextStyle, TextStyle normalTextStyle,
TextStyle mentionsTextStyle) { TextStyle mentionsTextStyle) {
var textList = text.split(' '); var textList = text.split(' ');
List<TextSpan> resList = []; var resList = <TextSpan>[];
for (var e in textList) { for (var e in textList) {
if (mentions != null && if (mentions != null &&
mentions.isNotEmpty && mentions.isNotEmpty &&
@@ -1,7 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart';
import 'package:stream_chat_flutter/src/info_tile.dart'; import 'package:stream_chat_flutter/src/info_tile.dart';
import 'package:stream_chat_flutter/src/message_search_item.dart'; import 'package:stream_chat_flutter/src/message_search_item.dart';
import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart';
import '../stream_chat_flutter.dart'; import '../stream_chat_flutter.dart';
@@ -116,7 +116,7 @@ class MessageSearchListView extends StatefulWidget {
} }
class _MessageSearchListViewState extends State<MessageSearchListView> { class _MessageSearchListViewState extends State<MessageSearchListView> {
MessageSearchListController _messageSearchListController = final MessageSearchListController _messageSearchListController =
MessageSearchListController(); MessageSearchListController();
@override @override
@@ -245,7 +245,7 @@ class _MessageSearchListViewState extends State<MessageSearchListView> {
} }
Widget _buildQueryProgressIndicator(context) { Widget _buildQueryProgressIndicator(context) {
MessageSearchBlocState messageSearchBloc = MessageSearchBloc.of(context); final messageSearchBloc = MessageSearchBloc.of(context);
return StreamBuilder<bool>( return StreamBuilder<bool>(
stream: messageSearchBloc.queryMessagesLoading, stream: messageSearchBloc.queryMessagesLoading,
@@ -1,11 +1,11 @@
import 'package:cached_network_image/cached_network_image.dart'; import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart';
import 'package:stream_chat_flutter/src/channel_header.dart'; import 'package:stream_chat_flutter/src/channel_header.dart';
import 'package:stream_chat_flutter/src/channel_preview.dart'; import 'package:stream_chat_flutter/src/channel_preview.dart';
import 'package:stream_chat_flutter/src/message_input.dart'; import 'package:stream_chat_flutter/src/message_input.dart';
import 'package:stream_chat_flutter/src/reaction_icon.dart'; import 'package:stream_chat_flutter/src/reaction_icon.dart';
import 'package:stream_chat_flutter/src/utils.dart'; import 'package:stream_chat_flutter/src/utils.dart';
import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart';
/// Inherited widget providing the [StreamChatThemeData] to the widget tree /// Inherited widget providing the [StreamChatThemeData] to the widget tree
class StreamChatTheme extends InheritedWidget { class StreamChatTheme extends InheritedWidget {
@@ -476,7 +476,7 @@ class ColorTheme {
this.bgGradient = const LinearGradient( this.bgGradient = const LinearGradient(
begin: Alignment.topCenter, begin: Alignment.topCenter,
end: Alignment.bottomCenter, end: Alignment.bottomCenter,
colors: [const Color(0xfff7f7f7), const Color(0xfffcfcfc)], colors: [Color(0xfff7f7f7), Color(0xfffcfcfc)],
stops: [0, 1], stops: [0, 1],
), ),
this.borderTop = const Effect( this.borderTop = const Effect(
@@ -519,7 +519,10 @@ class ColorTheme {
this.bgGradient = const LinearGradient( this.bgGradient = const LinearGradient(
begin: Alignment.topCenter, begin: Alignment.topCenter,
end: Alignment.bottomCenter, end: Alignment.bottomCenter,
colors: [const Color(0xff101214), const Color(0xff070a0d)], colors: [
Color(0xff101214),
Color(0xff070a0d),
],
stops: [0, 1], stops: [0, 1],
), ),
}); });
@@ -386,7 +386,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.cloud_download({ factory StreamSvgIcon.cloudDownload({
double size, double size,
Color color, Color color,
}) { }) {
@@ -434,7 +434,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.arrow_right({ factory StreamSvgIcon.arrowRight({
double size, double size,
Color color, Color color,
}) { }) {
@@ -446,7 +446,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.close_small({ factory StreamSvgIcon.closeSmall({
double size, double size,
Color color, Color color,
}) { }) {
@@ -458,7 +458,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.Icon_curve_line_left_up({ factory StreamSvgIcon.iconCurveLineLeftUp({
double size, double size,
Color color, Color color,
}) { }) {
@@ -470,7 +470,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.Icon_moon({ factory StreamSvgIcon.iconMoon({
double size, double size,
Color color, Color color,
}) { }) {
@@ -482,7 +482,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.Icon_SHARE({ factory StreamSvgIcon.iconShare({
double size, double size,
Color color, Color color,
}) { }) {
@@ -494,7 +494,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.Icon_grid({ factory StreamSvgIcon.iconGrid({
double size, double size,
Color color, Color color,
}) { }) {
@@ -506,7 +506,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.Icon_send_message({ factory StreamSvgIcon.iconSendMessage({
double size, double size,
Color color, Color color,
}) { }) {
@@ -518,7 +518,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.Icon_menu_point_v({ factory StreamSvgIcon.iconMenuPoint({
double size, double size,
Color color, Color color,
}) { }) {
@@ -530,7 +530,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.Icon_save({ factory StreamSvgIcon.iconSave({
double size, double size,
Color color, Color color,
}) { }) {
@@ -542,7 +542,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.share_arrow({ factory StreamSvgIcon.shareArrow({
double size, double size,
Color color, Color color,
}) { }) {
@@ -554,7 +554,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.filetype_7z({ factory StreamSvgIcon.filetype7z({
double size, double size,
Color color, Color color,
}) { }) {
@@ -566,7 +566,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.filetype_csv({ factory StreamSvgIcon.filetypeCsv({
double size, double size,
Color color, Color color,
}) { }) {
@@ -578,7 +578,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.filetype_doc({ factory StreamSvgIcon.filetypeDoc({
double size, double size,
Color color, Color color,
}) { }) {
@@ -590,7 +590,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.filetype_docx({ factory StreamSvgIcon.filetypeDocx({
double size, double size,
Color color, Color color,
}) { }) {
@@ -602,7 +602,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.filetype_Generic({ factory StreamSvgIcon.filetypeGeneric({
double size, double size,
Color color, Color color,
}) { }) {
@@ -614,7 +614,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.filetype_html({ factory StreamSvgIcon.filetypeHtml({
double size, double size,
Color color, Color color,
}) { }) {
@@ -626,7 +626,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.filetype_md({ factory StreamSvgIcon.filetypeMd({
double size, double size,
Color color, Color color,
}) { }) {
@@ -638,7 +638,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.filetype_odt({ factory StreamSvgIcon.filetypeOdt({
double size, double size,
Color color, Color color,
}) { }) {
@@ -650,7 +650,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.filetype_pdf({ factory StreamSvgIcon.filetypePdf({
double size, double size,
Color color, Color color,
}) { }) {
@@ -662,7 +662,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.filetype_ppt({ factory StreamSvgIcon.filetypePpt({
double size, double size,
Color color, Color color,
}) { }) {
@@ -674,7 +674,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.filetype_pptx({ factory StreamSvgIcon.filetypePptx({
double size, double size,
Color color, Color color,
}) { }) {
@@ -686,7 +686,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.filetype_rar({ factory StreamSvgIcon.filetypeRar({
double size, double size,
Color color, Color color,
}) { }) {
@@ -698,7 +698,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.filetype_rtf({ factory StreamSvgIcon.filetypeRtf({
double size, double size,
Color color, Color color,
}) { }) {
@@ -710,7 +710,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.filetype_tar({ factory StreamSvgIcon.filetypeTar({
double size, double size,
Color color, Color color,
}) { }) {
@@ -722,7 +722,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.filetype_txt({ factory StreamSvgIcon.filetypeTxt({
double size, double size,
Color color, Color color,
}) { }) {
@@ -734,7 +734,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.filetype_xls({ factory StreamSvgIcon.filetypeXls({
double size, double size,
Color color, Color color,
}) { }) {
@@ -746,7 +746,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.filetype_xlsx({ factory StreamSvgIcon.filetypeXlsx({
double size, double size,
Color color, Color color,
}) { }) {
@@ -758,7 +758,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.filetype_zip({ factory StreamSvgIcon.filetypeZip({
double size, double size,
Color color, Color color,
}) { }) {
@@ -770,7 +770,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.Icon_group({ factory StreamSvgIcon.iconGroup({
double size, double size,
Color color, Color color,
}) { }) {
@@ -782,7 +782,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.Icon_notification({ factory StreamSvgIcon.iconNotification({
double size, double size,
Color color, Color color,
}) { }) {
@@ -794,7 +794,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.Icon_user_delete({ factory StreamSvgIcon.iconUserDelete({
double size, double size,
Color color, Color color,
}) { }) {
@@ -818,7 +818,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.circle_up({ factory StreamSvgIcon.circleUp({
double size, double size,
Color color, Color color,
}) { }) {
@@ -830,7 +830,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.Icon_user_settings({ factory StreamSvgIcon.iconUserSettings({
double size, double size,
Color color, Color color,
}) { }) {
@@ -890,7 +890,7 @@ class StreamSvgIcon extends StatelessWidget {
); );
} }
factory StreamSvgIcon.icon_flag({ factory StreamSvgIcon.iconFlag({
double size, double size,
Color color, Color color,
}) { }) {
@@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart';
import 'package:stream_chat_flutter/stream_chat_flutter.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart';
import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart';
import 'user_item.dart'; import 'user_item.dart';
@@ -138,7 +138,7 @@ class _UserListViewState extends State<UserListView>
with WidgetsBindingObserver { with WidgetsBindingObserver {
bool get _isListView => widget.crossAxisCount == 1; bool get _isListView => widget.crossAxisCount == 1;
UserListController _userListController = UserListController(); final UserListController _userListController = UserListController();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
+19 -19
View File
@@ -221,7 +221,7 @@ String getSizeText(int bytes) {
} }
if (bytes <= 1000) { if (bytes <= 1000) {
return '${bytes} bytes'; return '$bytes bytes';
} else if (bytes <= 100000) { } else if (bytes <= 100000) {
return '${(bytes / 1000).toStringAsFixed(2)} KB'; return '${(bytes / 1000).toStringAsFixed(2)} KB';
} else { } else {
@@ -233,58 +233,58 @@ String getSizeText(int bytes) {
StreamSvgIcon getFileTypeImage(String type) { StreamSvgIcon getFileTypeImage(String type) {
switch (type) { switch (type) {
case '7z': case '7z':
return StreamSvgIcon.filetype_7z(); return StreamSvgIcon.filetype7z();
break; break;
case 'csv': case 'csv':
return StreamSvgIcon.filetype_csv(); return StreamSvgIcon.filetypeCsv();
break; break;
case 'doc': case 'doc':
return StreamSvgIcon.filetype_doc(); return StreamSvgIcon.filetypeDoc();
break; break;
case 'docx': case 'docx':
return StreamSvgIcon.filetype_docx(); return StreamSvgIcon.filetypeDocx();
break; break;
case 'html': case 'html':
return StreamSvgIcon.filetype_html(); return StreamSvgIcon.filetypeHtml();
break; break;
case 'md': case 'md':
return StreamSvgIcon.filetype_md(); return StreamSvgIcon.filetypeMd();
break; break;
case 'odt': case 'odt':
return StreamSvgIcon.filetype_odt(); return StreamSvgIcon.filetypeOdt();
break; break;
case 'pdf': case 'pdf':
return StreamSvgIcon.filetype_pdf(); return StreamSvgIcon.filetypePdf();
break; break;
case 'ppt': case 'ppt':
return StreamSvgIcon.filetype_ppt(); return StreamSvgIcon.filetypePpt();
break; break;
case 'pptx': case 'pptx':
return StreamSvgIcon.filetype_pptx(); return StreamSvgIcon.filetypePptx();
break; break;
case 'rar': case 'rar':
return StreamSvgIcon.filetype_rar(); return StreamSvgIcon.filetypeRar();
break; break;
case 'rtf': case 'rtf':
return StreamSvgIcon.filetype_rtf(); return StreamSvgIcon.filetypeRtf();
break; break;
case 'tar': case 'tar':
return StreamSvgIcon.filetype_tar(); return StreamSvgIcon.filetypeTar();
break; break;
case 'txt': case 'txt':
return StreamSvgIcon.filetype_txt(); return StreamSvgIcon.filetypeTxt();
break; break;
case 'xls': case 'xls':
return StreamSvgIcon.filetype_xls(); return StreamSvgIcon.filetypeXls();
break; break;
case 'xlsx': case 'xlsx':
return StreamSvgIcon.filetype_xlsx(); return StreamSvgIcon.filetypeXlsx();
break; break;
case 'zip': case 'zip':
return StreamSvgIcon.filetype_zip(); return StreamSvgIcon.filetypeZip();
break; break;
default: default:
return StreamSvgIcon.filetype_Generic(); return StreamSvgIcon.filetypeGeneric();
break; break;
} }
} }