小编Chr*_*son的帖子

如何在颤振中使用 KeepAliveNotification?

我在 SliverList 中有一些小部件,我不想在滚动屏幕外时丢失状态。根据文档,“...懒惰列表中的孩子被包裹在 AutomaticKeepAlive 小部件中,以便孩子们可以使用 KeepAliveNotifications 来保存他们的状态,否则他们会在屏幕外被垃圾收集。”,我的问题是,我如何发送保持活动通知?我未能理解文档,也无法找到任何使用示例。

我从哪里获取或创建 Listenable?在我的应用程序中,当用户点击部分标题时,它会展开并将对齐方式从水平更改为垂直。当用户向下滚动页面时,状态将丢失。下面的代码示例(删除了一些与问题无关的代码以减少混乱)。

class Page extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: new DefaultTabController(
        length: choices.length,
        child: new Scaffold(
          body: new CustomScrollView(slivers: <Widget>[
            new SliverAppBar(
            title: new Container(
              child: new TabBar(
                tabs: choices.map((Choice choice) {
                  return new Tab(
                    text: choice.title,
                    icon: new Image.asset(choice.icon, height:22.0),
                  );
                }).toList(),
              )),
            ),
            new SliverList(delegate:new SliverChildListDelegate([
              // Widget that I want to KeepAlive
              new TrendingArticles(),
              //Other widgets                                                     
            ])),
          ]),
        ),
      ),
    );
  }
} …
Run Code Online (Sandbox Code Playgroud)

dart flutter

5
推荐指数
1
解决办法
1272
查看次数

HTML 视频元素有时无法在 iOS 上以 PWA 模式播放来自 getUserMedia 的流

我正在尝试捕获相机输入并在视频元素中播放它。此代码始终适用于桌面 Chrome 和 Safari。在 iOS 上,它始终在使用 Safari 的浏览器模式下工作。

我面临的问题是,它仅有时无法在 iOS 的独立 PWA 模式(保存到主屏幕)下工作。我没有收到任何错误,而且它似乎是随机发生的。我想我修好了它只是为了几个小时后它再次发生。有时关闭应用程序并重新打开可以正常工作,有时需要尝试 10 次以上。我尝试过很多不同版本的代码,异步的、基于承诺的、等待加载的、可以播放的等等。

流加载并处于活动状态(授予权限时),srcObject 显示为正确设置,但 video.play() 不起作用。我尝试等待戏剧承诺,但有时它永远不会解决。视频 ReadyState 保持在 0。有时代码会正常工作,视频会像平常一样播放相机流。

任何帮助将不胜感激。

navigator.mediaDevices
    .getUserMedia({
        video: {
            width: { min: 640, ideal: 1280, max: 1920 },
            height: { min: 480, ideal: 720, max: 1080 },
            facingMode: 'environment'
        },
        audio: true
    })
    .then((stream) => {
        let video = document.createElement('video');
        video.controls = true;
        video.muted = true;
        video.playsInline = true;
        video.onerror = function (e) {
            console.log(e);
        };
        video.onabort = function (e) {
            console.log(e); …
Run Code Online (Sandbox Code Playgroud)

javascript ios getusermedia progressive-web-apps svelte

5
推荐指数
0
解决办法
1835
查看次数