添加举报清屏功能

master
laiiihz 5 years ago
parent 1cb477b28b
commit c3c62961c9

@ -508,4 +508,10 @@ class LiveAPI {
///
static const String liveStopExplain = '/v1/live/live/un_explain';
///
static const String reportType = '/v1/live/live/report/types';
///
static const String report = '/v1/live/live/report/submit';
}

@ -1,18 +1,17 @@
import 'package:chewie/chewie.dart';
import 'package:common_utils/common_utils.dart';
import 'package:flutter/material.dart';
import 'package:many_like/many_like.dart';
import 'package:oktoast/oktoast.dart';
import 'package:recook/constants/api.dart';
import 'package:recook/constants/header.dart';
import 'package:recook/manager/http_manager.dart';
import 'package:recook/manager/user_manager.dart';
import 'package:recook/pages/live/live_stream/live_report_view.dart';
import 'package:recook/pages/live/live_stream/show_goods_list.dart';
import 'package:recook/pages/live/models/live_stream_info_model.dart';
import 'package:recook/pages/live/sub_page/user_home_page.dart';
import 'package:recook/pages/live/widget/live_user_bar.dart';
import 'package:recook/utils/custom_route.dart';
import 'package:recook/widgets/bottom_sheet/action_sheet.dart';
import 'package:recook/widgets/custom_image_button.dart';
import 'package:video_player/video_player.dart';
@ -193,67 +192,51 @@ class _LivePlaybackViewPageState extends State<LivePlaybackViewPage> {
CustomImageButton(
onPressed: () {
showModalBottomSheet(
context: context,
builder: (BuildContext) {
return Container(
width: rSize(200),
height: rSize(200),
color: Colors.black87,
child: Padding(
padding: EdgeInsets.all(8.0),
child: Column(
children: [
Row(
children: [
Column(
context: context,
builder: (context) {
return Container(
width: rSize(200),
color: Colors.black87,
child: Padding(
padding: EdgeInsets.all(8.0),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Row(
children: [
CustomImageButton(
onPressed: () {
Navigator.pop(context);
showModalBottomSheet(
context: context,
builder: (context) {
return LiveReportView();
},
);
},
child: Column(
children: [
SizedBox(
width: rSize(60),
height: rSize(60),
child: Icon(
Icons.clear_all,
size: rSize(30),),
),
Text('清屏'),
],
),
],
),
Row(
children: [
Column(
children: [
SizedBox(
width: rSize(60),
height: rSize(60),
child: Icon(Icons.report_problem,
size: rSize(30),),
Icons
.report_problem,
size: rSize(30),
),
),
Text('举报'),
],
),
],
),
],
),
),
],
),
],
),
);
});
//ActionSheet.show(
//context,
//items: ['举报'],
//listener: (index) {
//Navigator.pop(context);
//fake
//Future.delayed(
// Duration(milliseconds: 1000), () {
//GSDialog.of(context)
// .showSuccess(context, '举报成功');
//});
//},
//);
),
);
},
);
},
child: Image.asset(
R.ASSETS_LIVE_LIVE_MORE_PNG,

@ -0,0 +1,160 @@
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:oktoast/oktoast.dart';
import 'package:recook/constants/api.dart';
import 'package:recook/constants/header.dart';
import 'package:recook/manager/http_manager.dart';
import 'package:recook/pages/live/models/live_report_model.dart';
import 'package:recook/widgets/custom_image_button.dart';
import 'package:image_picker/image_picker.dart';
class LiveReportView extends StatefulWidget {
LiveReportView({Key key}) : super(key: key);
@override
_LiveReportViewState createState() => _LiveReportViewState();
}
class _LiveReportViewState extends State<LiveReportView> {
int type = 1;
List<LiveReportModel> models = [];
File _imageFile;
TextEditingController _textController = TextEditingController();
@override
void initState() {
HttpManager.post(LiveAPI.reportType, {}).then((resultData) {
if (resultData?.data['data'] != null) {
setState(() {
models = (resultData?.data['data'] as List)
.map((e) => LiveReportModel.fromJson(e))
.toList();
});
}
});
super.initState();
}
@override
void dispose() {
_textController?.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return DraggableScrollableSheet(builder: (context, controller) {
return Material(
color: Colors.black,
borderRadius: BorderRadius.vertical(
top: Radius.circular(rSize(10)),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Expanded(
child: ListView(
controller: controller,
children: [
Text(
'请选择举报类型',
style: TextStyle(
color: Colors.white,
fontSize: rSP(13),
),
),
models.isEmpty
? Center(child: CircularProgressIndicator())
: Wrap(
children: models
.map((e) => Row(
mainAxisSize: MainAxisSize.min,
children: [
Radio<int>(
value: e.id,
groupValue: type,
onChanged: (value) {
setState(() {
type = value;
});
},
),
Text(
e.name,
style: TextStyle(
color: Colors.white,
fontSize: rSP(14),
),
),
],
))
.toList(),
),
TextField(
controller: _textController,
maxLength: 255,
maxLines: 10,
decoration: InputDecoration(
border: OutlineInputBorder(),
),
),
CustomImageButton(
onPressed: () {
ImagePicker()
.getImage(source: ImageSource.gallery)
.then((value) {
if (value != null) {
setState(() {
_imageFile = File(value.path);
});
}
});
},
child: _imageFile == null
? Image.asset(
R.ASSETS_PLACEHOLDER_NEW_1X1_A_PNG,
height: rSize(100),
width: rSize(100),
)
: Image.file(
_imageFile,
height: rSize(100),
),
),
],
),
),
MaterialButton(
onPressed: () {
if (_imageFile == null)
showToast('图片不能为空');
else {
GSDialog.of(context).showLoadingDialog(context, '上传图片中');
HttpManager.uploadFile(
url: CommonApi.upload,
file: _imageFile,
key: "photo",
).then((result) {
GSDialog.of(context).dismiss(context);
GSDialog.of(context).showLoadingDialog(context, '举报中');
HttpManager.post(LiveAPI.report, {
"type": type,
'content': _textController.text,
'imgUrl': result.url,
}).then((_) {
GSDialog.of(context).dismiss(context);
showToast('举报成功');
Navigator.pop(context);
});
});
}
},
color: Colors.red,
child: Text('举报'),
),
],
),
);
});
}
}

@ -8,6 +8,7 @@ import 'package:recook/constants/header.dart';
import 'package:recook/manager/http_manager.dart';
import 'package:recook/manager/user_manager.dart';
import 'package:recook/pages/live/live_stream/live_blur_page.dart';
import 'package:recook/pages/live/live_stream/live_report_view.dart';
import 'package:recook/pages/live/live_stream/show_goods_list.dart';
import 'package:recook/pages/live/models/live_stream_info_model.dart';
import 'package:recook/pages/live/sub_page/user_home_page.dart';
@ -370,10 +371,81 @@ class _LiveStreamViewPageState extends State<LiveStreamViewPage> {
},
);
},
child: Image.asset(
R.ASSETS_LIVE_LIVE_MORE_PNG,
width: rSize(32),
height: rSize(32),
child: CustomImageButton(
padding: EdgeInsets.zero,
onPressed: () {
showModalBottomSheet(
context: context,
builder: (context) {
return Container(
width: rSize(200),
color: Colors.black87,
child: Padding(
padding: EdgeInsets.all(8.0),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Row(
children: [
CustomImageButton(
onPressed: () {
Navigator.pop(context);
setState(() {
chatObjects.clear();
});
},
child: Column(
children: [
SizedBox(
width: rSize(60),
height: rSize(60),
child: Icon(
Icons.clear_all,
size: rSize(30),
),
),
Text('清屏'),
],
),
),
CustomImageButton(
onPressed: () {
Navigator.pop(context);
showModalBottomSheet(
context: context,
builder: (context) {
return LiveReportView();
},
);
},
child: Column(
children: [
SizedBox(
width: rSize(60),
height: rSize(60),
child: Icon(
Icons
.report_problem,
size: rSize(30),
),
),
Text('举报'),
],
),
),
],
),
],
),
),
);
});
},
child: Image.asset(
R.ASSETS_LIVE_LIVE_MORE_PNG,
width: rSize(32),
height: rSize(32),
),
),
),
// SizedBox(width: rSize(10)),

@ -0,0 +1,18 @@
class LiveReportModel {
int id;
String name;
LiveReportModel({this.id, this.name});
LiveReportModel.fromJson(Map<String, dynamic> json) {
id = json['id'];
name = json['name'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['name'] = this.name;
return data;
}
}
Loading…
Cancel
Save