如何在Flutter上布置Agora视频屏幕?

时间:2020-05-15 03:11:08

标签: flutter video-streaming flutter-layout agora.io

如何布置屏幕,使其仅出现在Flutter App的角落?我只需要4个视频盒供其他用户使用。

1 个答案:

答案 0 :(得分:0)

如此处的快速入门指南所述:https://github.com/AgoraIO-Community/Agora-Flutter-Quickstart/

您可以使用“列”小部件将4个视频放置在4个不同的角

/// Helper function to get list of native views   List<Widget>
_getRenderViews() {
    final List<AgoraRenderWidget> list = [
      AgoraRenderWidget(0, local: true, preview: true),
    ];
    _users.forEach((int uid) => list.add(AgoraRenderWidget(uid)));
    return list;   }

  /// Video view wrapper   Widget _videoView(view) {
    return Expanded(child: Container(child: view));   }

  /// Video view row wrapper   Widget _expandedVideoRow(List<Widget> views) {
    final wrappedViews = views.map<Widget>(_videoView).toList();
    return Expanded(
      child: Row(
        children: wrappedViews,
      ),
    );   }

  /// Video layout wrapper   Widget _viewRows() {
    final views = _getRenderViews();
    switch (views.length) {
      case 1:
        return Container(
            child: Column(
          children: <Widget>[_videoView(views[0])],
        ));
      case 2:
        return Container(
            child: Column(
          children: <Widget>[
            _expandedVideoRow([views[0]]),
            _expandedVideoRow([views[1]])
          ],
        ));
      case 3:
        return Container(
            child: Column(
          children: <Widget>[
            _expandedVideoRow(views.sublist(0, 2)),
            _expandedVideoRow(views.sublist(2, 3))
          ],
        ));
      case 4:
        return Container(
            child: Column(
          children: <Widget>[
            _expandedVideoRow(views.sublist(0, 2)),
            _expandedVideoRow(views.sublist(2, 4))
          ],
        ));
      default:
    }
    return Container();   }