fixes
This commit is contained in:
@@ -63,6 +63,10 @@ class _FullScreenMediaState extends State<FullScreenMedia>
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
var videoAttachments = widget.mediaAttachments
|
||||||
|
.where((element) => element.type == 'video')
|
||||||
|
.toList();
|
||||||
|
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
resizeToAvoidBottomInset: false,
|
resizeToAvoidBottomInset: false,
|
||||||
body: Stack(
|
body: Stack(
|
||||||
@@ -113,7 +117,10 @@ class _FullScreenMediaState extends State<FullScreenMedia>
|
|||||||
);
|
);
|
||||||
} else if (widget.mediaAttachments[position].type ==
|
} else if (widget.mediaAttachments[position].type ==
|
||||||
'video') {
|
'video') {
|
||||||
if (!videoPackages[position].initialised) {
|
var controllerPackage = videoPackages[videoAttachments
|
||||||
|
.indexOf(widget.mediaAttachments[position])];
|
||||||
|
|
||||||
|
if (!controllerPackage.initialised) {
|
||||||
return Center(
|
return Center(
|
||||||
child: CircularProgressIndicator(),
|
child: CircularProgressIndicator(),
|
||||||
);
|
);
|
||||||
@@ -130,7 +137,7 @@ class _FullScreenMediaState extends State<FullScreenMedia>
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
child: Chewie(
|
child: Chewie(
|
||||||
controller: videoPackages[position].chewieController,
|
controller: controllerPackage.chewieController,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -160,8 +167,9 @@ class _FullScreenMediaState extends State<FullScreenMedia>
|
|||||||
ImageFooter(
|
ImageFooter(
|
||||||
currentPage: _currentPage,
|
currentPage: _currentPage,
|
||||||
totalPages: widget.mediaAttachments.length,
|
totalPages: widget.mediaAttachments.length,
|
||||||
urls: widget.mediaAttachments,
|
mediaAttachments: widget.mediaAttachments,
|
||||||
message: widget.message,
|
message: widget.message,
|
||||||
|
videoPackages: videoPackages,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
+56
-45
@@ -3,6 +3,7 @@ import 'dart:math';
|
|||||||
import 'dart:typed_data';
|
import 'dart:typed_data';
|
||||||
|
|
||||||
import 'package:cached_network_image/cached_network_image.dart';
|
import 'package:cached_network_image/cached_network_image.dart';
|
||||||
|
import 'package:chewie/chewie.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';
|
||||||
@@ -12,7 +13,6 @@ import 'package:path_provider/path_provider.dart';
|
|||||||
import 'package:stream_chat/stream_chat.dart';
|
import 'package:stream_chat/stream_chat.dart';
|
||||||
import 'package:stream_chat_flutter/src/stream_chat.dart';
|
import 'package:stream_chat_flutter/src/stream_chat.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/user_avatar.dart';
|
|
||||||
import 'package:stream_chat_flutter/stream_chat_flutter.dart';
|
import 'package:stream_chat_flutter/stream_chat_flutter.dart';
|
||||||
|
|
||||||
import 'stream_channel.dart';
|
import 'stream_channel.dart';
|
||||||
@@ -31,9 +31,11 @@ class ImageFooter extends StatefulWidget {
|
|||||||
final int currentPage;
|
final int currentPage;
|
||||||
final int totalPages;
|
final int totalPages;
|
||||||
|
|
||||||
final List<Attachment> urls;
|
final List<Attachment> mediaAttachments;
|
||||||
final Message message;
|
final Message message;
|
||||||
|
|
||||||
|
final List<VideoPackage> videoPackages;
|
||||||
|
|
||||||
/// Creates a channel header
|
/// Creates a channel header
|
||||||
ImageFooter({
|
ImageFooter({
|
||||||
Key key,
|
Key key,
|
||||||
@@ -42,8 +44,9 @@ class ImageFooter extends StatefulWidget {
|
|||||||
this.onImageTap,
|
this.onImageTap,
|
||||||
this.currentPage = 0,
|
this.currentPage = 0,
|
||||||
this.totalPages = 0,
|
this.totalPages = 0,
|
||||||
this.urls,
|
this.mediaAttachments,
|
||||||
this.message,
|
this.message,
|
||||||
|
this.videoPackages,
|
||||||
}) : preferredSize = Size.fromHeight(kToolbarHeight),
|
}) : preferredSize = Size.fromHeight(kToolbarHeight),
|
||||||
super(key: key);
|
super(key: key);
|
||||||
|
|
||||||
@@ -55,7 +58,6 @@ class ImageFooter extends StatefulWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class _ImageFooterState extends State<ImageFooter> {
|
class _ImageFooterState extends State<ImageFooter> {
|
||||||
Future<QueryUsersResponse> _userQuery;
|
|
||||||
bool _userSearchMode = false;
|
bool _userSearchMode = false;
|
||||||
TextEditingController _searchController = TextEditingController();
|
TextEditingController _searchController = TextEditingController();
|
||||||
TextEditingController _messageController = TextEditingController();
|
TextEditingController _messageController = TextEditingController();
|
||||||
@@ -63,12 +65,6 @@ class _ImageFooterState extends State<ImageFooter> {
|
|||||||
Set<User> _selectedUsers = {};
|
Set<User> _selectedUsers = {};
|
||||||
bool _loading = false;
|
bool _loading = false;
|
||||||
|
|
||||||
@override
|
|
||||||
void initState() {
|
|
||||||
super.initState();
|
|
||||||
_userQuery = _queryUsers(context);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return SafeArea(
|
return SafeArea(
|
||||||
@@ -123,6 +119,10 @@ class _ImageFooterState extends State<ImageFooter> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildPhotosModal(context) {
|
Widget _buildPhotosModal(context) {
|
||||||
|
var videoAttachments = widget.mediaAttachments
|
||||||
|
.where((element) => element.type == 'video')
|
||||||
|
.toList();
|
||||||
|
|
||||||
showModalBottomSheet(
|
showModalBottomSheet(
|
||||||
context: context,
|
context: context,
|
||||||
shape: RoundedRectangleBorder(
|
shape: RoundedRectangleBorder(
|
||||||
@@ -174,20 +174,33 @@ class _ImageFooterState extends State<ImageFooter> {
|
|||||||
shrinkWrap: true,
|
shrinkWrap: true,
|
||||||
physics: NeverScrollableScrollPhysics(),
|
physics: NeverScrollableScrollPhysics(),
|
||||||
itemBuilder: (context, position) {
|
itemBuilder: (context, position) {
|
||||||
return Padding(
|
if (widget.mediaAttachments[position].type == 'video') {
|
||||||
padding: const EdgeInsets.all(1.0),
|
var controllerPackage = widget.videoPackages[
|
||||||
child: AspectRatio(
|
videoAttachments
|
||||||
child: CachedNetworkImage(
|
.indexOf(widget.mediaAttachments[position])];
|
||||||
imageUrl: widget.urls[position].imageUrl ??
|
|
||||||
widget.urls[position].assetUrl ??
|
return FittedBox(
|
||||||
widget.urls[position].thumbUrl,
|
child: Chewie(
|
||||||
fit: BoxFit.cover,
|
controller: controllerPackage.chewieController,
|
||||||
),
|
),
|
||||||
aspectRatio: 1.0,
|
);
|
||||||
),
|
} else {
|
||||||
);
|
return Padding(
|
||||||
|
padding: const EdgeInsets.all(1.0),
|
||||||
|
child: AspectRatio(
|
||||||
|
child: CachedNetworkImage(
|
||||||
|
imageUrl:
|
||||||
|
widget.mediaAttachments[position].imageUrl ??
|
||||||
|
widget.mediaAttachments[position].assetUrl ??
|
||||||
|
widget.mediaAttachments[position].thumbUrl,
|
||||||
|
fit: BoxFit.cover,
|
||||||
|
),
|
||||||
|
aspectRatio: 1.0,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
itemCount: widget.urls.length,
|
itemCount: widget.mediaAttachments.length,
|
||||||
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
|
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
|
||||||
crossAxisCount: 3),
|
crossAxisCount: 3),
|
||||||
),
|
),
|
||||||
@@ -206,7 +219,12 @@ class _ImageFooterState extends State<ImageFooter> {
|
|||||||
builder: (context) {
|
builder: (context) {
|
||||||
return StatefulBuilder(builder: (context, modalSetState) {
|
return StatefulBuilder(builder: (context, modalSetState) {
|
||||||
return Padding(
|
return Padding(
|
||||||
padding: const EdgeInsets.only(top: 16.0, left: 8.0, right: 8.0),
|
padding: EdgeInsets.only(
|
||||||
|
top: _userSearchMode
|
||||||
|
? 16.0
|
||||||
|
: MediaQuery.of(context).size.height / 2,
|
||||||
|
left: 8.0,
|
||||||
|
right: 8.0),
|
||||||
child: Material(
|
child: Material(
|
||||||
borderRadius: BorderRadius.only(
|
borderRadius: BorderRadius.only(
|
||||||
topLeft: Radius.circular(16.0),
|
topLeft: Radius.circular(16.0),
|
||||||
@@ -233,7 +251,7 @@ class _ImageFooterState extends State<ImageFooter> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
crossAxisCount: 3,
|
crossAxisCount: 4,
|
||||||
pagination: PaginationParams(
|
pagination: PaginationParams(
|
||||||
limit: 25,
|
limit: 25,
|
||||||
),
|
),
|
||||||
@@ -295,12 +313,18 @@ class _ImageFooterState extends State<ImageFooter> {
|
|||||||
child: InkWell(
|
child: InkWell(
|
||||||
onTap: () async {
|
onTap: () async {
|
||||||
var url = widget
|
var url = widget
|
||||||
.urls[widget.currentPage].imageUrl ??
|
.mediaAttachments[widget.currentPage]
|
||||||
|
.imageUrl ??
|
||||||
widget
|
widget
|
||||||
.urls[widget.currentPage].assetUrl ??
|
.mediaAttachments[widget.currentPage]
|
||||||
widget.urls[widget.currentPage].thumbUrl;
|
.assetUrl ??
|
||||||
|
widget
|
||||||
|
.mediaAttachments[widget.currentPage]
|
||||||
|
.thumbUrl;
|
||||||
|
|
||||||
if (widget.urls[widget.currentPage].type ==
|
if (widget
|
||||||
|
.mediaAttachments[widget.currentPage]
|
||||||
|
.type ==
|
||||||
'video') {
|
'video') {
|
||||||
await _saveVideo(url);
|
await _saveVideo(url);
|
||||||
Navigator.pop(context);
|
Navigator.pop(context);
|
||||||
@@ -437,9 +461,10 @@ class _ImageFooterState extends State<ImageFooter> {
|
|||||||
color: Colors.black,
|
color: Colors.black,
|
||||||
),
|
),
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
var url = widget.urls[widget.currentPage].imageUrl ??
|
var url =
|
||||||
widget.urls[widget.currentPage].assetUrl ??
|
widget.mediaAttachments[widget.currentPage].imageUrl ??
|
||||||
widget.urls[widget.currentPage].thumbUrl;
|
widget.mediaAttachments[widget.currentPage].assetUrl ??
|
||||||
|
widget.mediaAttachments[widget.currentPage].thumbUrl;
|
||||||
var type = url?.split('?')?.first?.split('.')?.last ?? 'jpg';
|
var type = url?.split('?')?.first?.split('.')?.last ?? 'jpg';
|
||||||
var request = await HttpClient().getUrl(Uri.parse(url));
|
var request = await HttpClient().getUrl(Uri.parse(url));
|
||||||
var response = await request.close();
|
var response = await request.close();
|
||||||
@@ -533,20 +558,6 @@ class _ImageFooterState extends State<ImageFooter> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<QueryUsersResponse> _queryUsers(context) {
|
|
||||||
return StreamChat.of(context).client.queryUsers(
|
|
||||||
pagination: PaginationParams(
|
|
||||||
limit: 25,
|
|
||||||
),
|
|
||||||
sort: [
|
|
||||||
SortOption(
|
|
||||||
'name',
|
|
||||||
direction: SortOption.ASC,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Sends the current message
|
/// Sends the current message
|
||||||
Future sendMessage() async {
|
Future sendMessage() async {
|
||||||
var text = _messageController.text.trim();
|
var text = _messageController.text.trim();
|
||||||
|
|||||||
Reference in New Issue
Block a user