android - 如何将播放器置于顶部位置

标签 android ios flutter

我试图将视频播放器放在屏幕顶部,但它始终位于屏幕中央 - 即使我也尝试使用容器。

下面是我的dart文件,请检查并告诉我。对于播放器,我正在为 Controller 使用 chewie 库并播放网络 url。在 chewie 库中,他们正在使用视频播放器插件。

import 'package:chewie/chewie.dart';
import 'package:chewie/src/chewie_player.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:ottdemo_flutter/image_model.dart';
import 'package:video_player/video_player.dart';


class ChewieDemo extends StatefulWidget {

  final Datum imageData;
  ChewieDemo({ this.title = 'Player', Key key, @required this.imageData }): super(key:key);

  final String title;

  @override
  State<StatefulWidget> createState() {
    return _ChewieDemoState();
  }
}

class _ChewieDemoState extends State<ChewieDemo> {

  TargetPlatform _platform;
  VideoPlayerController _videoPlayerController1;
  VideoPlayerController _videoPlayerController2;
  ChewieController _chewieController;

  @override
  void initState() {
    super.initState();
    print('url player :${widget.imageData.dataUrl}');
    // 'https://www.sample-videos.com/video123/mp4/480/big_buck_bunny_480p_20mb.mp4'
    _videoPlayerController1 = VideoPlayerController.network('${widget.imageData.dataUrl}');
    _chewieController = ChewieController(
      videoPlayerController: _videoPlayerController1,
      aspectRatio: 3 / 2,
      autoPlay: true,
      looping: true,
      // Tried playing around with some of these other options:

      // showControls: false,
      // materialProgressColors: ChewieProgressColors(
      //   playedColor: Colors.red,
      //   handleColor: Colors.blue,
      //   backgroundColor: Colors.grey,
      //   bufferedColor: Colors.lightGreen,
      // ),
      // placeholder: Container(
      //   color: Colors.grey,
      // ),
      // autoInitialize: true
    );
  }

  @override
  void dispose() {
    _videoPlayerController1.dispose();
    _videoPlayerController2.dispose();
    _chewieController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: widget.title,
      theme: ThemeData.light().copyWith(
        platform: _platform ?? Theme.of(context).platform,
      ),
       home: DefaultTabController(
    length: 3,
    child: Scaffold(
    appBar: AppBar(
      title: Text(widget.title),
      bottom: TabBar(
          tabs: [
            Tab(icon: Icon(Icons.directions_car)),
            Tab(icon: Icon(Icons.directions_transit)),
            Tab(icon: Icon(Icons.directions_bike)),
          ],
      ),
    ),
    body: SafeArea(
        child: Column(
          children: <Widget>[
            Chewie(
              controller: _chewieController,
            ),
            TabBarView(
              children: [
                Icon(Icons.directions_car),
                Icon(Icons.directions_transit),
                Icon(Icons.directions_bike),
              ],
            )
          ],
        )
      ),
    ),
  ),
);
}}

最佳答案

由于您希望 Chewie 位于顶部,我假设您正在尝试在播放器下方添加其他小部件。

例如,您可以将 Chewie 嵌入到 Column() 中。
默认情况下,Column() 已将其 mainAxisAlignment 属性设置为 MainAxisAlignment.start,这意味着子项将从屏幕的上边缘开始增长向下。

就像这样:

Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        children: <Widget>[
          Chewie(
            controller: _chewieController,
          )
        ],
      ),
    );
  }

还有。为了保持顶部的槽口和其他内容清晰,您可能希望将整个内容包装在 SafeArea() 小部件中。

Widget build(BuildContext context) {
  return Scaffold(
    body: SafeArea(
      child: Column(
        children: <Widget>[
          Chewie(
            controller: _chewieController,
          )
        ],
      ),
    ),
  );
}

关于android - 如何将播放器置于顶部位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54780185/

相关文章:

java - 多个屏幕上的 View 组(控件)

ios - 禁用照片库访问的自动请求

asynchronous - Flutter:如何将参数传递给 Future 异步函数

dart - 无法模拟 flutter 中的单例类

android - 我可以检测 Android 是否已从 Notification Intent/PendingIntent 中终止应用程序(任务进程)吗?

android - android中有没有订阅支付api,用户必须每两个月支付一次,才能访问应用程序服务?

android - 如何测试 string.xml 的完整性

ios - 如何找回 iOS 7 中的 UIButton 边框?

iphone - 在 iOS 中获取 UIViewController 类名

flutter - 如何使用Flutter访问多页API?