feat: 搜索结果跳转直播
This commit is contained in:
@ -224,10 +224,12 @@ class SearchLiveItemModel {
|
|||||||
this.liveTime,
|
this.liveTime,
|
||||||
this.uname,
|
this.uname,
|
||||||
this.uface,
|
this.uface,
|
||||||
|
this.face,
|
||||||
this.userCover,
|
this.userCover,
|
||||||
this.type,
|
this.type,
|
||||||
this.title,
|
this.title,
|
||||||
this.cover,
|
this.cover,
|
||||||
|
this.pic,
|
||||||
this.online,
|
this.online,
|
||||||
this.rankIndex,
|
this.rankIndex,
|
||||||
this.rankScore,
|
this.rankScore,
|
||||||
@ -242,16 +244,19 @@ class SearchLiveItemModel {
|
|||||||
String? liveTime;
|
String? liveTime;
|
||||||
String? uname;
|
String? uname;
|
||||||
String? uface;
|
String? uface;
|
||||||
|
String? face;
|
||||||
String? userCover;
|
String? userCover;
|
||||||
String? type;
|
String? type;
|
||||||
List? title;
|
List? title;
|
||||||
String? cover;
|
String? cover;
|
||||||
|
String? pic;
|
||||||
int? online;
|
int? online;
|
||||||
int? rankIndex;
|
int? rankIndex;
|
||||||
int? rankScore;
|
int? rankScore;
|
||||||
int? roomid;
|
int? roomid;
|
||||||
int? attentions;
|
int? attentions;
|
||||||
String? cateName;
|
String? cateName;
|
||||||
|
Map? watchedShow;
|
||||||
|
|
||||||
SearchLiveItemModel.fromJson(Map<String, dynamic> json) {
|
SearchLiveItemModel.fromJson(Map<String, dynamic> json) {
|
||||||
rankOffset = json['rank_offset'];
|
rankOffset = json['rank_offset'];
|
||||||
@ -260,10 +265,12 @@ class SearchLiveItemModel {
|
|||||||
liveTime = json['live_time'];
|
liveTime = json['live_time'];
|
||||||
uname = json['uname'];
|
uname = json['uname'];
|
||||||
uface = json['uface'];
|
uface = json['uface'];
|
||||||
|
face = json['uface'];
|
||||||
userCover = json['user_cover'];
|
userCover = json['user_cover'];
|
||||||
type = json['type'];
|
type = json['type'];
|
||||||
title = Em.regTitle(json['title']);
|
title = Em.regTitle(json['title']);
|
||||||
cover = json['cover'];
|
cover = json['cover'];
|
||||||
|
pic = json['cover'];
|
||||||
online = json['online'];
|
online = json['online'];
|
||||||
rankIndex = json['rank_index'];
|
rankIndex = json['rank_index'];
|
||||||
rankScore = json['rank_score'];
|
rankScore = json['rank_score'];
|
||||||
|
@ -31,6 +31,9 @@ class LiveRoomController extends GetxController {
|
|||||||
liveItem = Get.arguments['liveItem'];
|
liveItem = Get.arguments['liveItem'];
|
||||||
heroTag = Get.arguments['heroTag'] ?? '';
|
heroTag = Get.arguments['heroTag'] ?? '';
|
||||||
if (liveItem.pic != null && liveItem.pic != '') {
|
if (liveItem.pic != null && liveItem.pic != '') {
|
||||||
|
cover = liveItem.pic;
|
||||||
|
}
|
||||||
|
if (liveItem.cover != null && liveItem.cover != '') {
|
||||||
cover = liveItem.cover;
|
cover = liveItem.cover;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -112,68 +112,67 @@ class _LiveRoomPageState extends State<LiveRoomPage> {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
if (_liveRoomController.liveItem.watchedShow != null)
|
Container(
|
||||||
Container(
|
height: 45,
|
||||||
height: 45,
|
padding: const EdgeInsets.only(left: 12, right: 12),
|
||||||
padding: const EdgeInsets.only(left: 12, right: 12),
|
decoration: BoxDecoration(
|
||||||
decoration: BoxDecoration(
|
color: Theme.of(context).colorScheme.background,
|
||||||
color: Theme.of(context).colorScheme.background,
|
border: Border(
|
||||||
border: Border(
|
bottom: BorderSide(
|
||||||
bottom: BorderSide(
|
color: Theme.of(context).dividerColor.withOpacity(0.1)),
|
||||||
color: Theme.of(context).dividerColor.withOpacity(0.1)),
|
),
|
||||||
|
),
|
||||||
|
child: Row(children: <Widget>[
|
||||||
|
SizedBox(
|
||||||
|
width: 38,
|
||||||
|
height: 38,
|
||||||
|
child: IconButton(
|
||||||
|
onPressed: () {},
|
||||||
|
icon: const Icon(
|
||||||
|
Icons.subtitles_outlined,
|
||||||
|
size: 21,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
child: Row(children: <Widget>[
|
const Spacer(),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
width: 38,
|
width: 38,
|
||||||
height: 38,
|
height: 38,
|
||||||
child: IconButton(
|
child: IconButton(
|
||||||
onPressed: () {},
|
onPressed: () {},
|
||||||
icon: const Icon(
|
icon: const Icon(
|
||||||
Icons.subtitles_outlined,
|
Icons.hd_outlined,
|
||||||
size: 21,
|
size: 20,
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const Spacer(),
|
),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
width: 38,
|
width: 38,
|
||||||
height: 38,
|
height: 38,
|
||||||
child: IconButton(
|
child: IconButton(
|
||||||
onPressed: () {},
|
onPressed: () => _liveRoomController
|
||||||
icon: const Icon(
|
.setVolumn(plPlayerController!.volume.value),
|
||||||
Icons.hd_outlined,
|
icon: Obx(() => Icon(
|
||||||
size: 20,
|
_liveRoomController.volumeOff.value
|
||||||
),
|
? Icons.volume_off_outlined
|
||||||
|
: Icons.volume_up_outlined,
|
||||||
|
size: 21,
|
||||||
|
)),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: 38,
|
||||||
|
height: 38,
|
||||||
|
child: IconButton(
|
||||||
|
onPressed: () => {},
|
||||||
|
// plPlayerController!.goToFullscreen(context),
|
||||||
|
icon: const Icon(
|
||||||
|
Icons.fullscreen,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
SizedBox(
|
),
|
||||||
width: 38,
|
]),
|
||||||
height: 38,
|
),
|
||||||
child: IconButton(
|
|
||||||
onPressed: () => _liveRoomController
|
|
||||||
.setVolumn(plPlayerController!.volume.value),
|
|
||||||
icon: Obx(() => Icon(
|
|
||||||
_liveRoomController.volumeOff.value
|
|
||||||
? Icons.volume_off_outlined
|
|
||||||
: Icons.volume_up_outlined,
|
|
||||||
size: 21,
|
|
||||||
)),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
SizedBox(
|
|
||||||
width: 38,
|
|
||||||
height: 38,
|
|
||||||
child: IconButton(
|
|
||||||
onPressed: () => {},
|
|
||||||
// plPlayerController!.goToFullscreen(context),
|
|
||||||
icon: const Icon(
|
|
||||||
Icons.fullscreen,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
]),
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
@ -211,13 +211,13 @@ class _SearchPageState extends State<SearchPage> with RouteAware {
|
|||||||
return Obx(
|
return Obx(
|
||||||
() => Container(
|
() => Container(
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
padding: const EdgeInsets.fromLTRB(10, 25, 4, 0),
|
padding: const EdgeInsets.fromLTRB(10, 25, 6, 0),
|
||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
if (_searchController.historyList.isNotEmpty)
|
if (_searchController.historyList.isNotEmpty)
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.fromLTRB(6, 0, 1, 2),
|
padding: const EdgeInsets.fromLTRB(6, 0, 0, 2),
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:get/get.dart';
|
||||||
import 'package:pilipala/common/constants.dart';
|
import 'package:pilipala/common/constants.dart';
|
||||||
import 'package:pilipala/common/widgets/network_img_layer.dart';
|
import 'package:pilipala/common/widgets/network_img_layer.dart';
|
||||||
import 'package:pilipala/utils/utils.dart';
|
import 'package:pilipala/utils/utils.dart';
|
||||||
@ -32,6 +33,7 @@ class LiveItem extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
String heroTag = Utils.makeHeroTag(liveItem.roomid);
|
||||||
return Card(
|
return Card(
|
||||||
elevation: 0,
|
elevation: 0,
|
||||||
clipBehavior: Clip.hardEdge,
|
clipBehavior: Clip.hardEdge,
|
||||||
@ -40,7 +42,10 @@ class LiveItem extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
margin: EdgeInsets.zero,
|
margin: EdgeInsets.zero,
|
||||||
child: InkWell(
|
child: InkWell(
|
||||||
onTap: () {},
|
onTap: () async {
|
||||||
|
Get.toNamed('/liveRoom?roomid=${liveItem.roomid}',
|
||||||
|
arguments: {'liveItem': liveItem, 'heroTag': heroTag});
|
||||||
|
},
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
ClipRRect(
|
ClipRRect(
|
||||||
@ -58,7 +63,7 @@ class LiveItem extends StatelessWidget {
|
|||||||
return Stack(
|
return Stack(
|
||||||
children: [
|
children: [
|
||||||
Hero(
|
Hero(
|
||||||
tag: Utils.makeHeroTag(liveItem.roomid),
|
tag: heroTag,
|
||||||
child: NetworkImgLayer(
|
child: NetworkImgLayer(
|
||||||
src: liveItem.cover,
|
src: liveItem.cover,
|
||||||
type: 'emote',
|
type: 'emote',
|
||||||
|
Reference in New Issue
Block a user