Слияние кода завершено, страница обновится автоматически
Flutter富文本编辑器,支持图文和视频混合排列。
首先需要扩展并实现 RichEditController
。
简单的使用可以从下面的例子开始。
chewie: 0.9.10
video_player: 0.10.11
image_picker: 0.6.7
import 'package:chewie/chewie.dart';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'package:rich_edit/rich_edit.dart';
import 'package:video_player/video_player.dart';
class SimpleRichEditController extends RichEditController {
Map<String, ChewieController> controllers = Map();
// 添加视频的方法
@override
Future<String> addVideo() async {
var pickedFile = await ImagePicker().getVideo(source: ImageSource.gallery);
if (pickedFile != null) {
// 模拟上传后的路径
return "http://static.fanghnet.com/uploads/szx/uploads/2020/06/353f2c48ce164e368cc040c4fb425331.mp4";
}
return null;
}
// 添加图片的方法
@override
Future<String> addImage() async {
var pickedFile = await ImagePicker().getImage(source: ImageSource.gallery);
if (pickedFile != null) {
// 模拟上传后的路径
return "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1592205365009&di=fcc201c596fc6681fe7812aa7fea4b23&imgtype=0&src=http%3A%2F%2Fa3.att.hudong.com%2F14%2F75%2F01300000164186121366756803686.jpg";
}
return null;
}
}
``` // Метод создания вьюшки видео
@override
Widget generateVideoView(RichEditData data) {
if (!controllers.containsKey(data.data)) {
var controller = ChewieController(
videoPlayerController: VideoPlayerController.network(data.data),
autoPlay: false,
autoInitialize: true,
aspectRatio: 16 / 9,
looping: false,
showControls: true,
// Placeholder
placeholder: new Container(
color: Colors.grey,
),
);
controllers[data.data] = controller;
}
var video = Chewie(
controller: controllers[data.data],
);
return video;
} // Метод создания вьюшки изображения
@override
Widget generateImageView(RichEditData data) =>
Image.network(data.data, height: 200, width: 300);
}
```Используйте
```dart
RichEdit(SimpleRichEditController());
Методы SimpleRichEditController
:
Метод | Описание |
---|---|
generateHtml() | Преобразует содержимое в HTML |
generateTextHtml() | Генерирует текстовый HTML, который можно переопределить для создания шаблона генерации |
generateImageHtml() | Генерирует HTML для изображений |
generateVideoHtml() | Генерирует HTML для видео |
getDataList() | Получает набор данных содержимого |
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )