Reason Pun

todo 上传临境

buildscript {
ext.kotlin_version = '1.6.10'
ext.kotlin_version = '1.6.21'
repositories {
google()
mavenCentral()
......
......@@ -33,7 +33,7 @@ import 'util/theme_utils.dart';
/// json to model
/// 安装
/// dependencies:
/// json_annotation: ^4.4.0
/// json_annotation: ^4.4.0x
/// dev_dependencies:
/// json_serializable: ^6.1.3
/// build_runner: ^2.1.7
......
......@@ -3,6 +3,7 @@ class HttpApi {
static const String register = 'register';
static const String verify = 'verify';
static const String login = 'login';
static const String uploadVideo = 'upload/video';
static const String user = 'user';
static const String search = 'search/repositories';
static const String subscriptions = 'users/simplezhli/subscriptions';
......
import 'package:Parlando/net/dio_utils.dart';
import 'package:Parlando/net/http_api.dart';
import 'package:dio/dio.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_2d_amap/flutter_2d_amap.dart';
......@@ -6,10 +9,10 @@ import 'package:Parlando/poem/widgets/lang_sort_bottom_sheet.dart';
import 'package:Parlando/res/resources.dart';
import 'package:Parlando/routers/fluro_navigator.dart';
import 'package:Parlando/routers/routers.dart';
import 'package:Parlando/widgets/click_item.dart';
import 'package:Parlando/widgets/my_app_bar.dart';
import 'package:Parlando/extension/int_extension.dart';
import 'package:path_provider/path_provider.dart';
import '../poem_router.dart';
......@@ -29,6 +32,8 @@ class _PoemPublishState extends State<PoemPublish> {
String _address = '我在此地';
final LangSortProvider _provider = LangSortProvider();
final TextEditingController _msgController = TextEditingController();
@override
void initState() {
super.initState();
......@@ -72,6 +77,7 @@ class _PoemPublishState extends State<PoemPublish> {
maxWidth: double.infinity,
),
child: TextField(
controller: _msgController,
maxLines: 10,
decoration: InputDecoration(
contentPadding: const EdgeInsets.all(10.0),
......@@ -203,16 +209,51 @@ class _PoemPublishState extends State<PoemPublish> {
);
}
Future<dynamic> _getUploadVideo() async {
final directory = await getApplicationDocumentsDirectory();
dynamic video = await MultipartFile.fromFile(
directory.path + "/" + widget.data,
filename: "xxx23.png");
return video;
}
Future<void> publishPoem(BuildContext context) async {
String msg = _msgController.text;
if (msg.isEmpty) {
msg = "读此一言,仿佛身临其境";
}
isPublishing = true;
setState(() {});
// TODO 等待套入正式接口发布临境
await Future.delayed(const Duration(seconds: 2), () {
NavigatorUtils.push(
context,
'${PoemRouter.poemCompletePage}?id=100',
_getUploadVideo().then((value) {
Map<String, dynamic> map = <String, dynamic>{
"video": value,
};
FormData formData = FormData.fromMap(map);
DioUtils.instance.asyncRequestNetwork(
Method.post,
HttpApi.uploadVideo,
params: formData,
onSuccess: (data) {
print(data);
//TODO 上传视频成功之后创建临境
isPublishing = false;
},
onError: (code, msg) {
isPublishing = false;
setState(() {});
},
);
});
// TODO 等待套入正式接口发布临境
// await Future.delayed(const Duration(seconds: 2), () {
// NavigatorUtils.push(
// context,
// '${PoemRouter.poemCompletePage}?id=100',
// );
// });
}
Future<bool> _isExit() async {
......
......@@ -255,7 +255,7 @@ class _PoemRecordVideoPageState extends State<PoemRecordVideoPage>
NavigatorUtils.push(
context,
'${PoemRouter.poemVideoPlayer}?url=100',
'${PoemRouter.poemVideoPlayer}?url=$currentUnix.$fileFormat',
);
} catch (e) {
// print(e);
......
......@@ -4,6 +4,7 @@ import 'package:Parlando/res/resources.dart';
import 'package:Parlando/routers/fluro_navigator.dart';
import 'package:Parlando/widgets/my_app_bar.dart';
import 'package:Parlando/extension/int_extension.dart';
import 'package:path_provider/path_provider.dart';
import '../poem_router.dart';
......@@ -26,16 +27,22 @@ class _PoemVideoPlayerState extends State<PoemVideoPlayer> {
_PoemVideoPlayerState();
Future<String> _getDir() async {
final directory = await getApplicationDocumentsDirectory();
return directory.path;
}
@override
void initState() {
super.initState();
// player.setDataSource(widget.url, autoPlay: true);
//TODO 替换真实URL
player.setDataSource(
"asset:///assets/data/video_01.mp4",
autoPlay: true,
);
player.setLoop(0);
_getDir().then((value) {
String path = "$value/" + widget.url;
player.setDataSource(
path,
autoPlay: true,
);
player.setLoop(0);
});
}
@override
......@@ -112,10 +119,8 @@ class _PoemVideoPlayerState extends State<PoemVideoPlayer> {
child: ElevatedButton(
onPressed: () {
NavigatorUtils.push(
context,
'${PoemRouter.poemPublish}?data=100',
clearStack: true
);
context, '${PoemRouter.poemPublish}?data=' + widget.url,
clearStack: true);
},
child: Text(
"下一步",
......
This diff is collapsed. Click to expand it.