当前位置: 首页 > 知识库问答 >
问题:

无状态小部件类中的键是什么?

宰父才
2023-03-14
class GreenFrog extends StatelessWidget {
  const GreenFrog({ Key key }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return new Container(color: const Color(0xFF2DBD3A));
  }
}
class Frog extends StatelessWidget {
  const Frog({
    Key key,
    this.color: const Color(0xFF2DBD3A),
    this.child,
  }) : super(key: key);

  final Color color;

  final Widget child;

  @override
  Widget build(BuildContext context) {
    return new Container(color: color, child: child);
  }
}

共有1个答案

丌官霖
2023-03-14

TLDR:所有小部件都应该有一个key key作为可选参数或其构造函数。key是flutter engine在识别列表中哪个小部件被更改的步骤中使用的东西。

当您有一个列表(等等),其中包含可能被移除/插入的相同类型的小部件时,它非常有用。

假设您有这样的代码(代码不起作用,但您明白了):

AnimatedList(
  children: [
    Card(child: Text("foo")),
    Card(child: Text("bar")),
    Card(child: Text("42")),
  ]
)

您可以通过滑动单独删除这些小部件中的任何一个。

AnimatedList(
  children: [
    Card(child: Text("foo")),
    Card(child: Text("42")),
  ]
)

这是发生的地方。

如果我们再次开始我们的示例,使用key我们将得到以下内容:

AnimatedList(
  children: [
    Card(key: ObjectKey("foo"), child: Text("foo")),
    Card(key: ObjectKey("bar"), child: Text("bar")),
    Card(key: ObjectKey("42"), child: Text("42")),
  ]
)

注意键不是子索引,而是元素所特有的。

AnimatedList(
  children: [
    Card(key: ObjectKey("foo"), child: Text("foo")),
    Card(key: ObjectKey("42"), child: Text("42")),
  ]
)
 类似资料:
  • 有状态小部件被定义为在其生命周期内改变其状态的任何小部件。但是,将作为它的一个子元素是非常常见的做法。如果作为其子元素之一,,它不是变成有状态的吗? 我试图将文档作为代码的一部分进行查看,但无法弄清楚如何具有作为其子级,并且仍然保持。 Flutter中有状态和无状态小部件之间的关系和区别是什么?

  • 我很熟悉flutter中的无状态和有状态小部件,但我很好奇为什么我们不将有状态小部件定义为无状态小部件?为什么我们需要声明两个不同的类,一个用于createstate方法,一个用于实际的状态实现?

  • 问题内容: 目前,我正在阅读“ Java并发实践”,其中包含以下句子: 由于线程访问无状态对象的操作不会影响其他线程上操作的正确性,因此无状态对象是线程安全的。 那么,什么是无状态对象? 问题答案: 无状态对象是没有实例字段(实例变量)的类的实例。该类 可能 具有字段,但是它们是编译时常量(静态final)。 一个非常相关的术语是 不可变的 。不可变的对象可能具有状态,但是在调用方法时状态不会改变

  • 本文向大家介绍描述下在react中无状态组件和有状态组件的区别是什么?相关面试题,主要包含被问及描述下在react中无状态组件和有状态组件的区别是什么?时的应答技巧和注意事项,需要的朋友参考一下 1,无状态组件主要用来定义模板,接收来自父组件props传递过来的数据,使用{props.xxx}的表达式把props塞到模板里面。无状态组件应该保持模板的纯粹性,以便于组件复用。创建无状态组件如下: v

  • 问题内容: 我知道状态允许我们创建动态和交互的组件,但是我想深入了解状态。 有人可以通过一个真实的例子来帮助我理解React中的状态吗? 问题答案: 在上面的代码中,它有一个带有:count 的对象。 状态可以简单地理解为特定组件/应用在该时间点的值。在上面的示例中,当应用首次运行时,该应用处于状态 如我们所见,有两个按钮,它们使用来更新值,它只是更新应用计数的“状态”,并且只要状态改变,应用都会

  • 我是一个新手,我想建立动态地图 最终地图检查={'卧房':'床','浴室':'bathbub\u轮廓'}; 它显示一个错误 lib/模板/general.dart:164: 18:错误:无法从返回类型为MapEntry的函数返回类型为Row的值 “行”来自“包:flatter/src/widgets/basic”。dart’(“../flight/packages/flight/lib/src/w