add media list view controller to message input

This commit is contained in:
MateusHBR
2022-04-18 14:28:27 -03:00
parent 852f4b1ec5
commit 4e82131cf3
2 changed files with 64 additions and 7 deletions
@@ -15,6 +15,7 @@ import 'package:stream_chat_flutter/src/emoji/emoji.dart';
import 'package:stream_chat_flutter/src/emoji_overlay.dart';
import 'package:stream_chat_flutter/src/extension.dart';
import 'package:stream_chat_flutter/src/media_list_view.dart';
import 'package:stream_chat_flutter/src/media_list_view_controller.dart';
import 'package:stream_chat_flutter/src/multi_overlay.dart';
import 'package:stream_chat_flutter/src/quoted_message_widget.dart';
import 'package:stream_chat_flutter/src/user_mentions_overlay.dart';
@@ -343,6 +344,7 @@ class MessageInputState extends State<MessageInput> {
final List<User> _mentionedUsers = [];
final _imagePicker = ImagePicker();
final _mediaListViewController = MediaListViewController();
late final _focusNode = widget.focusNode ?? FocusNode();
late final _isInternalFocusNode = widget.focusNode == null;
bool _inputEnabled = true;
@@ -1056,6 +1058,26 @@ class MessageInputState extends State<MessageInput> {
);
},
),
const Spacer(),
FutureBuilder(
future: PhotoManager.requestPermissionExtend(),
builder: (context, snapshot) {
if (snapshot.hasData &&
snapshot.data == PermissionState.limited) {
return TextButton(
child: Text(context.translations.viewLibrary),
onPressed: () async {
await PhotoManager.presentLimited();
_mediaListViewController.updateMedia(
newValue: true,
);
},
);
}
return const SizedBox.shrink();
},
),
],
),
DecoratedBox(
@@ -1088,6 +1110,7 @@ class MessageInputState extends State<MessageInput> {
borderRadius: BorderRadius.circular(8),
),
child: _PickerWidget(
mediaListViewController: _mediaListViewController,
filePickerIndex: _filePickerIndex,
streamChatTheme: _streamChatTheme,
containsFile: _attachmentContainsFile,
@@ -1966,6 +1989,7 @@ class _PickerWidget extends StatefulWidget {
required this.onAddMoreFilesClick,
required this.onMediaSelected,
required this.streamChatTheme,
required this.mediaListViewController,
}) : super(key: key);
final int filePickerIndex;
@@ -1974,6 +1998,7 @@ class _PickerWidget extends StatefulWidget {
final void Function(DefaultAttachmentTypes) onAddMoreFilesClick;
final void Function(AssetEntity) onMediaSelected;
final StreamChatThemeData streamChatTheme;
final MediaListViewController mediaListViewController;
@override
_PickerWidgetState createState() => _PickerWidgetState();
@@ -2021,7 +2046,9 @@ class _PickerWidgetState extends State<_PickerWidget> {
),
);
}
return MediaListView(
controller: widget.mediaListViewController,
selectedIds: widget.selectedMedias,
onSelect: widget.onMediaSelected,
);