provider selector syntax sugar
This commit is contained in:
parent
a6409a3956
commit
9bd9332ae6
1 changed files with 48 additions and 52 deletions
|
@ -97,61 +97,57 @@ class VideoControlOverlayState extends State<VideoControlOverlay> with SingleTic
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Selector<MediaQueryData, Tuple3<double, EdgeInsets, EdgeInsets>>(
|
final mq = context.select((MediaQueryData mq) => Tuple3(mq.size.width, mq.viewInsets, mq.viewPadding));
|
||||||
selector: (c, mq) => Tuple3(mq.size.width, mq.viewInsets, mq.viewPadding),
|
final mqWidth = mq.item1;
|
||||||
builder: (c, mq, child) {
|
final mqViewInsets = mq.item2;
|
||||||
final mqWidth = mq.item1;
|
final mqViewPadding = mq.item3;
|
||||||
final mqViewInsets = mq.item2;
|
|
||||||
final mqViewPadding = mq.item3;
|
|
||||||
|
|
||||||
final viewInsets = widget.viewInsets ?? mqViewInsets;
|
final viewInsets = widget.viewInsets ?? mqViewInsets;
|
||||||
final viewPadding = widget.viewPadding ?? mqViewPadding;
|
final viewPadding = widget.viewPadding ?? mqViewPadding;
|
||||||
final safePadding = (viewInsets + viewPadding).copyWith(bottom: 8) + const EdgeInsets.symmetric(horizontal: 8.0);
|
final safePadding = (viewInsets + viewPadding).copyWith(bottom: 8) + const EdgeInsets.symmetric(horizontal: 8.0);
|
||||||
|
|
||||||
return Padding(
|
return Padding(
|
||||||
padding: safePadding,
|
padding: safePadding,
|
||||||
child: SizedBox(
|
child: SizedBox(
|
||||||
width: mqWidth - safePadding.horizontal,
|
width: mqWidth - safePadding.horizontal,
|
||||||
child: StreamBuilder<IjkStatus>(
|
child: StreamBuilder<IjkStatus>(
|
||||||
stream: controller.ijkStatusStream,
|
stream: controller.ijkStatusStream,
|
||||||
builder: (context, snapshot) {
|
builder: (context, snapshot) {
|
||||||
// do not use stream snapshot because it is obsolete when switching between videos
|
// do not use stream snapshot because it is obsolete when switching between videos
|
||||||
final status = controller.ijkStatus;
|
final status = controller.ijkStatus;
|
||||||
return Row(
|
return Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.end,
|
mainAxisAlignment: MainAxisAlignment.end,
|
||||||
children: status == IjkStatus.error
|
children: status == IjkStatus.error
|
||||||
? [
|
? [
|
||||||
OverlayButton(
|
OverlayButton(
|
||||||
scale: scale,
|
scale: scale,
|
||||||
child: IconButton(
|
child: IconButton(
|
||||||
icon: const Icon(OMIcons.openInNew),
|
icon: const Icon(OMIcons.openInNew),
|
||||||
onPressed: () => AndroidAppService.open(entry.uri, entry.mimeTypeAnySubtype),
|
onPressed: () => AndroidAppService.open(entry.uri, entry.mimeTypeAnySubtype),
|
||||||
tooltip: 'Open',
|
tooltip: 'Open',
|
||||||
),
|
),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
: [
|
||||||
|
Expanded(
|
||||||
|
child: _buildProgressBar(),
|
||||||
|
),
|
||||||
|
const SizedBox(width: 8),
|
||||||
|
OverlayButton(
|
||||||
|
scale: scale,
|
||||||
|
child: IconButton(
|
||||||
|
icon: AnimatedIcon(
|
||||||
|
icon: AnimatedIcons.play_pause,
|
||||||
|
progress: _playPauseAnimation,
|
||||||
),
|
),
|
||||||
]
|
onPressed: _playPause,
|
||||||
: [
|
tooltip: isPlaying ? 'Pause' : 'Play',
|
||||||
Expanded(
|
),
|
||||||
child: _buildProgressBar(),
|
),
|
||||||
),
|
],
|
||||||
const SizedBox(width: 8),
|
);
|
||||||
OverlayButton(
|
}),
|
||||||
scale: scale,
|
),
|
||||||
child: IconButton(
|
|
||||||
icon: AnimatedIcon(
|
|
||||||
icon: AnimatedIcons.play_pause,
|
|
||||||
progress: _playPauseAnimation,
|
|
||||||
),
|
|
||||||
onPressed: _playPause,
|
|
||||||
tooltip: isPlaying ? 'Pause' : 'Play',
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue