From a8d1200def2f845c26fd6c82d3b1d5eabb31a1b3 Mon Sep 17 00:00:00 2001 From: laiiihz Date: Thu, 19 Nov 2020 13:02:43 +0800 Subject: [PATCH] update dart sdk update webview version add small window page --- .../live/live_stream/show_goods_list.dart | 7 +- .../small_window/small_window_page.dart | 33 +++++++ .../small_window/small_window_widget.dart | 94 +++++++++++++++++++ pubspec.lock | 6 +- pubspec.yaml | 8 +- 5 files changed, 136 insertions(+), 12 deletions(-) create mode 100644 lib/pages/live/live_stream/small_window/small_window_page.dart create mode 100644 lib/pages/live/live_stream/small_window/small_window_widget.dart diff --git a/lib/pages/live/live_stream/show_goods_list.dart b/lib/pages/live/live_stream/show_goods_list.dart index 10d2bbf..32e7e35 100644 --- a/lib/pages/live/live_stream/show_goods_list.dart +++ b/lib/pages/live/live_stream/show_goods_list.dart @@ -12,6 +12,7 @@ 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'; @@ -116,11 +117,7 @@ class _GoodsListDialogState extends State { onTap: () { CRoute.push( context, - CommodityDetailPage( - arguments: CommodityDetailPage.setArguments(model.id), - liveId: widget.id, - isLive: true, - ), + SmallWindowPage(liveId: widget.id, id: model.id), ); }, child: Container( diff --git a/lib/pages/live/live_stream/small_window/small_window_page.dart b/lib/pages/live/live_stream/small_window/small_window_page.dart new file mode 100644 index 0000000..352da18 --- /dev/null +++ b/lib/pages/live/live_stream/small_window/small_window_page.dart @@ -0,0 +1,33 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.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; + SmallWindowPage({Key key, @required this.liveId, @required this.id}) + : super(key: key); + + @override + _SmallWindowPageState createState() => _SmallWindowPageState(); +} + +class _SmallWindowPageState extends State { + @override + Widget build(BuildContext context) { + return Stack( + children: [ + CommodityDetailPage( + arguments: CommodityDetailPage.setArguments(widget.id), + liveId: widget.liveId, + isLive: true, + ), + SmallWindowWidget(), + ], + ); + } +} diff --git a/lib/pages/live/live_stream/small_window/small_window_widget.dart b/lib/pages/live/live_stream/small_window/small_window_widget.dart new file mode 100644 index 0000000..08556a1 --- /dev/null +++ b/lib/pages/live/live_stream/small_window/small_window_widget.dart @@ -0,0 +1,94 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; + +class SmallWindowWidget extends StatefulWidget { + SmallWindowWidget({Key key}) : super(key: key); + + @override + _SmallWindowWidgetState createState() => _SmallWindowWidgetState(); +} + +class _SmallWindowWidgetState extends State { + double get _bottomSafe => 55 + ScreenUtil.statusBarHeight; + 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; + @override + void initState() { + super.initState(); + _topPos = ScreenUtil.statusBarHeight + 20; + _leftPos = 20; + } + + @override + Widget build(BuildContext context) { + return AnimatedPositioned( + left: _isHide ? -_width : _leftPos, + top: _topPos, + child: Stack( + children: [ + GestureDetector( + 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.blueAccent, + ), + ), + 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), + ); + } +} diff --git a/pubspec.lock b/pubspec.lock index 680045d..a35d33d 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1195,7 +1195,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: @@ -1225,5 +1225,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" diff --git a/pubspec.yaml b/pubspec.yaml index 9520305..4656b4d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -2,12 +2,12 @@ name: recook description: Recook Market App. publish_to: "none" -version: 1.3.12+205 +version: 1.3.13+206 # 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 @@ -50,9 +50,9 @@ dependencies: git: 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