美文网首页
Flutter中的Key

Flutter中的Key

作者: E术家 | 来源:发表于2020-06-18 18:56 被阅读0次

Key本身是一个抽象类

LocalKey

static bool canUpdate(Widget oldWidget, Widget newWidget) {
    return oldWidget.runtimeType == newWidget.runtimeType
        && oldWidget.key == newWidget.key;
  }

用作diff算法的核心所在!用作Element和Widget进行比较!

  • ValueKey 以一个数据作为Key。如:数字、字符
  • ObjectKey以Object对象作为Key
  • UniqueKey可以保证Key的唯一性!(一旦使用Uniquekey那么就不存在Element复用 了!)

GlobalKey

  • GlobalKey可以获取到对应的Widget的State对象!
class GlobalKeyDemo extends StatelessWidget {
  final GlobalKey<_ChildPageState> _globalKey = GlobalKey();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('GlobalKeyDemoo'),
      ),
      body: ChildPage(
        key: _globalKey,
      ),
      floatingActionButton: FloatingActionButton(
          child: Icon(Icons.add),
          onPressed: () {
            //在StatelessWidget中改变StatefulWidget里的内容并刷新UI
            _globalKey.currentState._count++;
            _globalKey.currentState.data =
                'old' + _globalKey.currentState._count.toString();
            _globalKey.currentState.setState(() {});
          }),
    );
  }
}

class ChildPage extends StatefulWidget {
  ChildPage({Key key}) : super(key: key);
  @override
  _ChildPageState createState() => _ChildPageState();
}

class _ChildPageState extends State<ChildPage> {
  int _count = 0;
  String data = 'hello';

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Column(
        children: <Widget>[
          Text(_count.toString()),
          Text(data),
        ],
      ),
    );
  }
}

相关文章

  • Flutter 中的 Key

    前言 Flutter 中一切皆 Widget,而 Widget 的构造方法中有个可选参数 Key。一般情况下我们不...

  • Flutter中的Key

    Key本身是一个抽象类 LocalKey 用作diff算法的核心所在!用作Element和Widget进行比较! ...

  • flutter 中的 key

    flutter中的key是用来标识[Widget]s, [Element]s and [SemanticsNode...

  • Flutter中的Key

    Key基本概念 Key本身就是个抽象类 大致分两大类(1. LocalKey 和 2. Globalkey )

  • Flutter中key的作用

    作者:森码 链接:https://www.jianshu.com/p/57debb89a24f 来源:简书 文章来...

  • Flutter中key的作用

    概述 在Widget的构造方法中,有Key这么一个可选参数,Key是一个抽象类,有LocalKey和GlobalK...

  • 理解 Flutter 中的 Key

    通过实际案列理解 Flutter 中 Key 在其渲染机制中起到的作用,从而达到能在合理的时间和地点使用合理的 K...

  • flutter中key的作用

    1.setState的原理 setstate会触发canUpdate函数的调用,这个函数会对比old widget...

  • Flutter中key的作用

    文章来源于Flutter Widgets 101 Ep. 4,感兴趣的同学可以直接看视频,更便于理解。 首先,我们...

  • flutter中key的使用

    参考文章:说说Flutter中最熟悉的陌生人 —— Key[https://weilu.blog.csdn.net...

网友评论

      本文标题:Flutter中的Key

      本文链接:https://www.haomeiwen.com/subject/ekouxktx.html