Merge commit '1df170a55a270cec307902aaa82277360caa4fba' into release

# Conflicts:
#	pubspec.yaml
master
zhang 5 years ago
commit 170d44b395

@ -26,7 +26,6 @@ import 'package:recook/utils/custom_route.dart';
import 'package:recook/utils/share_tool.dart';
import 'package:recook/widgets/bottom_sheet/action_sheet.dart';
import 'package:recook/widgets/custom_image_button.dart';
import 'package:recook/pages/live/functions/live_function.dart';
import 'package:tencent_im_plugin/entity/group_member_entity.dart';
import 'package:tencent_im_plugin/entity/message_entity.dart';
import 'package:tencent_im_plugin/entity/session_entity.dart';
@ -895,6 +894,8 @@ class _LiveStreamViewPageState extends State<LiveStreamViewPage> {
onLive: true,
id: widget.id,
models: _streamInfoModel.goodsLists,
player: _livePlayer,
url: _streamInfoModel.playUrl,
);
},
),

@ -12,10 +12,12 @@ import 'package:recook/pages/home/classify/mvp/goods_detail_model_impl.dart';
import 'package:recook/pages/home/classify/order_preview_page.dart';
import 'package:recook/pages/home/widget/plus_minus_view.dart';
import 'package:recook/pages/live/live_stream/live_sku_widget.dart';
import 'package:recook/pages/live/live_stream/small_window/small_window_page.dart';
import 'package:recook/pages/live/models/live_stream_info_model.dart'
show GoodsLists;
import 'package:recook/pages/user/user_page.dart';
import 'package:recook/utils/custom_route.dart';
import 'package:tencent_live_fluttify/tencent_live_fluttify.dart';
class GoodsListDialog extends StatefulWidget {
final List<GoodsLists> models;
@ -24,6 +26,8 @@ class GoodsListDialog extends StatefulWidget {
final Function(int explain) onExplain;
final int initExplain;
final int id;
final LivePlayer player;
final String url;
GoodsListDialog({
Key key,
@required this.models,
@ -32,6 +36,8 @@ class GoodsListDialog extends StatefulWidget {
this.onLive,
this.initExplain,
this.id,
this.player,
this.url,
}) : super(key: key);
@override
@ -113,15 +119,17 @@ class _GoodsListDialogState extends State<GoodsListDialog> {
_buildGoodsCard(GoodsLists model, int index) {
return GestureDetector(
onTap: () {
CRoute.push(
onTap: () async {
widget.player.pausePlay();
await CRoute.pushReplace(
context,
CommodityDetailPage(
arguments: CommodityDetailPage.setArguments(model.id),
SmallWindowPage(
liveId: widget.id,
isLive: true,
id: model.id,
url: widget.url,
),
);
widget.player.resumePlay();
},
child: Container(
padding: EdgeInsets.all(rSize(15)),
@ -438,6 +446,8 @@ showGoodsListDialog(
Function(int onExplain) onExplain,
int initExplain,
int id,
LivePlayer player,
String url,
}) {
showModalBottomSheet(
context: context,
@ -449,6 +459,8 @@ showGoodsListDialog(
initExplain: initExplain,
id: id,
onLive: onLive,
player: player,
url: url,
);
},
);

@ -0,0 +1,39 @@
import 'package:flutter/material.dart';
import 'package:recook/pages/home/classify/commodity_detail_page.dart';
import 'package:recook/pages/live/live_stream/small_window/small_window_widget.dart';
class SmallWindowPage extends StatefulWidget {
///ID
final int liveId;
///ID
final int id;
///
final String url;
SmallWindowPage({
Key key,
@required this.liveId,
@required this.id,
this.url,
}) : super(key: key);
@override
_SmallWindowPageState createState() => _SmallWindowPageState();
}
class _SmallWindowPageState extends State<SmallWindowPage> {
@override
Widget build(BuildContext context) {
return Stack(
children: [
CommodityDetailPage(
arguments: CommodityDetailPage.setArguments(widget.id),
liveId: widget.liveId,
isLive: true,
),
SmallWindowWidget(url: widget.url),
],
);
}
}

@ -0,0 +1,119 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:tencent_live_fluttify/tencent_live_fluttify.dart';
class SmallWindowWidget extends StatefulWidget {
final String url;
SmallWindowWidget({Key key, @required this.url}) : super(key: key);
@override
_SmallWindowWidgetState createState() => _SmallWindowWidgetState();
}
class _SmallWindowWidgetState extends State<SmallWindowWidget> {
double _topPos = 0;
double _leftPos = 0;
bool _isMoving = false;
double _width = 90;
double get _subWidth => _width / 2;
double _height = 160;
double get _subHeight => _height / 2;
bool _isHide = false;
LivePlayer _livePlayer;
@override
void initState() {
super.initState();
_topPos = ScreenUtil.statusBarHeight + 20;
_leftPos = 20;
}
@override
void dispose() {
_livePlayer?.stopPlay();
super.dispose();
}
@override
Widget build(BuildContext context) {
return AnimatedPositioned(
left: _isHide ? -_width : _leftPos,
top: _topPos,
child: Stack(
children: [
Positioned(
left: 0,
right: 0,
top: 0,
bottom: 0,
child: CloudVideo(
onCloudVideoCreated: (controller) async {
_livePlayer = await LivePlayer.create();
await _livePlayer.setPlayerView(controller);
_livePlayer.startPlay(widget.url, type: PlayType.RTMP);
},
),
),
GestureDetector(
onTap: () {
Navigator.pop(context);
},
onPanUpdate: (detail) {
setState(() {
_topPos = detail.globalPosition.dy - _subHeight;
_leftPos = detail.globalPosition.dx - _subWidth;
});
},
onPanStart: (detail) {
setState(() {
_isMoving = true;
});
},
onPanEnd: (detail) {
_isMoving = false;
if (_leftPos < 20) _leftPos = 20;
if (_topPos < ScreenUtil.statusBarHeight + 20)
_topPos = (20 + ScreenUtil.statusBarHeight);
if ((_leftPos + _width + 20) > ScreenUtil.screenWidthDp)
_leftPos = ScreenUtil.screenWidthDp - 20 - _width;
if ((_topPos + _height + 55 + 20) > ScreenUtil.screenHeightDp)
_topPos = ScreenUtil.screenHeightDp - 20 - _height - 55;
setState(() {});
},
child: Container(
height: _height,
width: _width,
color: Colors.transparent,
),
),
Positioned(
right: 10,
top: 10,
child: GestureDetector(
onTap: () {
setState(() {
_isHide = true;
});
},
child: Container(
height: 20,
width: 20,
child: Icon(
Icons.clear,
size: 16,
color: Colors.black,
),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(10),
),
),
),
),
],
),
curve: Curves.easeInOutCubic,
duration: _isMoving ? Duration.zero : Duration(milliseconds: 300),
);
}
}

@ -1199,7 +1199,7 @@ packages:
name: webview_flutter
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.3.24"
version: "1.0.7"
win32:
dependency: transitive
description:
@ -1229,5 +1229,5 @@ packages:
source: hosted
version: "2.2.1"
sdks:
dart: ">=2.10.0-110 <2.11.0"
flutter: ">=1.20.0 <2.0.0"
dart: ">=2.10.0 <2.11.0"
flutter: ">=1.22.0 <2.0.0"

@ -7,7 +7,7 @@ version: 1.3.16+209
# sdk min version to 2.2.2
# to support ... feature
environment:
sdk: ">=2.2.2 <3.0.0"
sdk: ">=2.10.0 <3.0.0"
module:
androidX: true
@ -53,8 +53,8 @@ dependencies:
url: https://gitee.com/laiiihz/flutter_qr_reader
ref: 3e4824752f4fa50c30ecd415341a3a779db01922
webview_flutter: ^1.0.7
# 网页组件
webview_flutter: ^0.3.15+1
# webview_flutter:
# git:
# url: https://github.com/haysuperman/webview_flutter.git

Loading…
Cancel
Save