小编Ans*_*llC的帖子

颤动 video_player 处置

我正在使用providerwithvideo_player来管理状态。

VideoProvider 具有:

videoPlayerController = VideoPlayerController.network(...);
Run Code Online (Sandbox Code Playgroud)

当用户切换到新视频(同一屏幕)时,我经常更改它。如果我直接分配一个新VideoPlayerController.network(...)videoPlayerController,旧的视频仍然会播放,你可以听到声音。解决方法是videoPlayerController.pause()之后分配一个新的VideoPlayerCOntroller.network

之前的Video是被GC处理了吗?这有任何性能问题吗?我想在切换到新视频之前摆脱以前的视频和使用的资源。videoPlayerController.dispose()在切换之前我不能,因为它会导致错误。

dart flutter

11
推荐指数
2
解决办法
7646
查看次数

Dart 是通过引用传递的吗?

在这篇文章中:Flutter video_player dispose

我问如何处理一些东西,以便我可以再次使用它。提供的答案工作正常,但它给我留下了这个问题:

为什么这段代码按预期工作?例如,它处理旧实例videoController使用oldController

final oldController = videoController;

  WidgetsBinding.instance.addPostFrameCallback((_) async {
    await oldController.dispose();

    _initController(link); //contains reassignment of videoController = VideoController.network(...)
  });
Run Code Online (Sandbox Code Playgroud)

在 C 或类似语言中,需要使用指针(或者我应该说我的首选方式)。要传递引用,请为其分配一个新值,然后处理旧值。

dart flutter

4
推荐指数
1
解决办法
7479
查看次数

Navigator.pop() 回调?

是否有回调函数或方法可以知道Navigator.of(context).pop()返回上一屏幕的动画已完成?目前我正在使用await Future.delayed(Duration(milliseconds: 500));用来完成这个。有没有更好的办法?

我使用它showModalBottomSheet(useRootNavigator: true)然后Navigator.pop()关闭底部工作表,然后推新路线。

代码:

Navigator.of(context).pop();
await Future.delayed(Duration(milliseconds: 500));
Navigator.of(context).push(...) // push new screen
Run Code Online (Sandbox Code Playgroud)

dart flutter

3
推荐指数
2
解决办法
4855
查看次数

无重复且固定长度的数组排列

我无法弄清楚如何生成值的组合。

鉴于:

const items = ['a', 'b', 'c', 'd', 'e'];
Run Code Online (Sandbox Code Playgroud)

应该生成:

[
    ['a', 'b', 'c'],
    ['a', 'b', 'd'],
    ['a', 'b', 'e'],
    ['a', 'c', 'd'],
    ['a', 'c', 'e'],
    ['a', 'd', 'e'],

    ['b', 'c', 'd'],
    ['b', 'c', 'e'],

    ['c', 'd', 'e']
]
Run Code Online (Sandbox Code Playgroud)

它为数组中的所有项目生成唯一的组合。基本上,每个项目的数组长度是Math.round(items.length / 2)

任何帮助将不胜感激。

javascript arrays

3
推荐指数
1
解决办法
836
查看次数

标签 统计

dart ×3

flutter ×3

arrays ×1

javascript ×1