【问题标题】:How to save slivers in constants?如何在常量中保存条子?
【发布时间】:2020-05-26 18:38:07
【问题描述】:

我是 Flutter 的新手,经过 2 个教程后,我正在尝试制作自己的应用程序。作为所有优秀的程序员,我不想重复代码。所以我有一部分要在 5 个屏幕中重复,我想在某个地方保存一个常量。通常,它适用于多种小部件,但我没有在 CustomScrollView 中使用 slivers 实现相同的结果。我用这个 sliver 的测试示例(文本列表)替换了实际内容,这会导致相同的错误,因此它将焦点保持在错误而不是内容中。

这是我保存的文件,目的是让这个 sliver 保持不变。

import 'package:flutter/material.dart';

const testSliverList = SliverList(
  delegate: SliverChildListDelegate([
    ListTile(
      title: Text("test3"),
    ),
    ListTile(
      title: Text("test4"),
    ),
    ListTile(
      title: Text("test4"),
    ),
    ListTile(
      title: Text("test4"),
    ),
    ListTile(
      title: Text("test4"),
    ),
    ListTile(
      title: Text("test4"),
    ),
    ListTile(
      title: Text("test4"),
    ),
    ListTile(
      title: Text("test4"),
    ),
    ListTile(
      title: Text("test4"),
    ),
  ]),
);

这是错误:

Compiler message:
lib/shared/app_bar.dart:4:13: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
Try using a constructor or factory that is 'const'.
  delegate: SliverChildListDelegate([
            ^^^^^^^^^^^^^^^^^^^^^^^

ps:它只是在单独的文件中时引发该错误。

提前致谢。

【问题讨论】:

    标签: flutter


    【解决方案1】:

    使用SliverChildListDelegate.fixed 而不仅仅是SliverChildListDelegateSliverChildListDelegate 不是 const 构造函数,因此不能放入 const

    更多参考请见this

    代码中的示例:

    const testSliverList = SliverList(
      delegate: SliverChildListDelegate.fixed([
        ListTile(
          title: Text("test3"),
        ),
        ListTile(
          title: Text("test4"),
        ),
        ListTile(
          title: Text("test4"),
        ),
        ListTile(
          title: Text("test4"),
        ),
        ListTile(
          title: Text("test4"),
        ),
        ListTile(
          title: Text("test4"),
        ),
        ListTile(
          title: Text("test4"),
        ),
        ListTile(
          title: Text("test4"),
        ),
        ListTile(
          title: Text("test4"),
        ),
      ]),
    );
    

    【讨论】:

    • 非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2017-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多