小编Ese*_*met的帖子

如何 BoxFit.cover 具有特定纵横比的全屏 VideoPlayer 小部件

我试过了FittedBox,也用 包裹了所有这些ConstrainedBox,但没有一个起作用。可能是我漏掉了一点。

问题也在:https : //github.com/flutter/flutter/issues/31911

这里的代码:

  @override
  Widget build(BuildContext context) {
    return Stack(
      children: <Widget>[
        FittedBox(
          fit: BoxFit.cover,
          child: AspectRatio(
            aspectRatio: _aspectRatio,
            child: VideoPlayer(_playerController),
          ),
        ),
        _buildText(),
      ],
    );
  }
Run Code Online (Sandbox Code Playgroud)

我想要的很简单,我想Stack在保留原始纵横比的同时全屏显示视频,我也想像BoxFit.cover.

错误日志:

I/flutter (11919): ??? EXCEPTION CAUGHT BY RENDERING LIBRARY ??????????????????????????????????????????????????????????
I/flutter (11919): The following assertion was thrown during performLayout():
I/flutter (11919): RenderAspectRatio has unbounded constraints.
I/flutter (11919): This RenderAspectRatio was given an aspect ratio of 0.5602409638554217 but was given both …
Run Code Online (Sandbox Code Playgroud)

dart flutter

11
推荐指数
1
解决办法
6549
查看次数

Nested Future 中的导航

编辑:在这个新问题主题中完全按照我的要求解决了问题:

小部件树内的条件导航

老问题:

这是我的启动屏幕,我想创建条件导航,但据我所知,FutureBuilder 没有导航逻辑。

这是我的启动屏幕构建方法:

@override
Widget build(BuildContext context) {
  return Material(
    child: ScopedModelDescendant<MainModel>(
      builder: (BuildContext context, Widget child, MainModel model) {
        return FutureBuilder(
          future: model.bootUp(),
          builder: (context, bootSnapshot) {
            print('====${bootSnapshot.data} is SNAPSHOT DATA====');
            return !bootSnapshot.hasData
                ? _buildSplash(context)
                : bootSnapshot.data
                    ? FutureBuilder(
                        future: model.fetchAll(model.tempUser),
                        builder: (context, dataSnapshot) {
                          return !dataSnapshot.hasData
                              ? _buildSplash(context)
                              : Navigator.of(context).pushReplacement(
                                  MaterialPageRoute(
                                      builder: (context) => HomePage()),
                                );
                        })
                    : Navigator.of(context).pushReplacement(
                        MaterialPageRoute(
                          builder: (context) => FirstScreen(),
                        ),
                      );
          },
        );
      },
    ),
  );
}
Run Code Online (Sandbox Code Playgroud)

正如您在代码中看到的,首先我检查用户是否使用异步方法登录,然后如果他之前登录,那么我正在获取与他相关的数据,一旦获取完成我想导航到用户主页。

错误日志:

I/flutter …
Run Code Online (Sandbox Code Playgroud)

dart flutter

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

小部件树内的条件导航

我之前问过但事情已经改变了,今天我意识到我之前得到的解决方案存在严重问题。我的算法有点改变。

这是新代码:

  @override
  Widget build(BuildContext context) {
    return Material(
      child: FutureBuilder(
        future: _future,
        builder: (context, snapshot) {
          if (snapshot.hasData) {
            print('BOOT VALUE IS ${snapshot.data}');
          }
          return !snapshot.hasData
              ? SplashScreen()
              : snapshot.data ? HomePage() : FirstScreen();
        },
      ),
    );
  }
Run Code Online (Sandbox Code Playgroud)

使用此解决方案,每次我在 FutureBuilder 内有条件地呈现的页面内导航时,都会执行 BootScreen 页面函数。所以这不是最好的......我需要在 Future Builder 中毫无问题地执行 Navigation,如下所示:

  @override
  Widget build(BuildContext context) {
    return Material(
      child: FutureBuilder(
        future: _future,
        builder: (context, snapshot) {
          if (snapshot.hasData) {
            print('BOOT VALUE IS ${snapshot.data}');
          }
          return !snapshot.hasData
              ? SplashScreen()
              : snapshot.data
                  ? Navigator.of(context).pushReplacement(
                      MaterialPageRoute(builder: …
Run Code Online (Sandbox Code Playgroud)

dart flutter

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

setState() 和 notifyListeners(),哪个更高效?

我一直致力于制作我的小部件,Stateless而不是Stateful为了性能优势。在某些情况下(BottomNavigationBar例如更新索引)notifyListeners()可以提供与setState().

起初,我认为notifyListener()与 相比setState(),它的级别较低,功能更基本,因此应该更高效。因为setState()方法可能会触发太多更高级别的framework方法,所以可能会消耗更多的 CPU 能力。

但是如果不进行适当和详细的性能测试,就很难确定。所以答案是什么?

编辑:此外,在某些情况下,notifyListeners()行为与setState(). 例如,我Text在 aStatelessWidget中有一个小部件,它包含一个Random值,当我通知 Class 中的一个不相关的值时,Text小部件也会得到更新。那么区别是什么呢?

dart flutter

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

标签 统计

dart ×4

flutter ×4