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

Flutter 如何在Flatter上布局Agora视频屏幕?,flutter,video-streaming,flutter-layout,agora.io,Flutter,Video Streaming,Flutter Layout,Agora.io,如何布局屏幕,使其仅出现在颤振应用程序的角落?我只需要为其他用户提供4个视频框。如《快速入门指南》中所述: 您可以使用列小部件将4个视频放置在4个不同的角落 /// Helper function to get list of native views List<Widget> _getRenderViews() { final List<AgoraRenderWidget> list = [ AgoraRenderWidget(0, local:

如何布局屏幕,使其仅出现在颤振应用程序的角落?我只需要为其他用户提供4个视频框。

如《快速入门指南》中所述:

您可以使用列小部件将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();   }
///获取本机视图列表的助手函数
_getRenderViews(){
最终名单=[
AgoraRenderWidget(0,本地:true,预览:true),
];
_users.forEach((intuid)=>list.add(AgoraRenderWidget(uid));
返回列表;}
///视频视图包装小部件\u视频视图(视图){
返回展开(子:容器(子:视图));}
///视频视图行包装程序小部件\u expandedVideoRow(列表视图){
final wrappedViews=views.map(_videoView.toList();
扩大回报(
孩子:排(
孩子们:wrappedViews,
),
);   }
///视频布局包装小部件_viewRows(){
最终视图=_GetRenderView();
开关(视图.长度){
案例1:
返回容器(
子:列(
子项:[[u videoView(视图[0])],
));
案例2:
返回容器(
子:列(
儿童:[
_expandedVideoRow([视图[0]]),
_expandedVideoRow([视图[1]])
],
));
案例3:
返回容器(
子:列(
儿童:[
_expandedVideoRow(视图子列表(0,2)),
_expandedVideoRow(视图.子列表(2,3))
],
));
案例4:
返回容器(
子:列(
儿童:[
_expandedVideoRow(视图子列表(0,2)),
_expandedVideoRow(视图.子列表(2,4))
],
));
违约:
}
返回容器();}

如《快速入门指南》中所述:

您可以使用列小部件将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();   }
///获取本机视图列表的助手函数
_getRenderViews(){
最终名单=[
AgoraRenderWidget(0,本地:true,预览:true),
];
_users.forEach((intuid)=>list.add(AgoraRenderWidget(uid));
返回列表;}
///视频视图包装小部件\u视频视图(视图){
返回展开(子:容器(子:视图));}
///视频视图行包装程序小部件\u expandedVideoRow(列表视图){
final wrappedViews=views.map(_videoView.toList();
扩大回报(
孩子:排(
孩子们:wrappedViews,
),
);   }
///视频布局包装小部件_viewRows(){
最终视图=_GetRenderView();
开关(视图.长度){
案例1:
返回容器(
子:列(
子项:[[u videoView(视图[0])],
));
案例2:
返回容器(
子:列(
儿童:[
_expandedVideoRow([视图[0]]),
_expandedVideoRow([视图[1]])
],
));
案例3:
返回容器(
子:列(
儿童:[
_expandedVideoRow(视图子列表(0,2)),
_expandedVideoRow(视图.子列表(2,3))
],
));
案例4:
返回容器(
子:列(
儿童:[
_expandedVideoRow(视图子列表(0,2)),
_expandedVideoRow(视图.子列表(2,4))
],
));
违约:
}
返回容器();}