zoukankan      html  css  js  c++  java
  • translations.dart阅读

    • 它是一个StatefulWidget, 初始化传入一个Listenable
    • 通过Listenable内部绑定了setState方法去触发子类的 build方法.
    • 子类通过继承AnimatedWidget,通过传入的Animation就能触发build方法
    • 以AnimateBuilder为例:

      _AnimatedState
      ....
      @override
      void initState() {
      super.initState();
      widget.listenable.addListener(_handleChange);
      }
      void _handleChange() {
      setState(() {
      // The listenable's state is our build state, and it changed already.
      });
      }
      @override
      Widget build(BuildContext context) => widget.build(context);
      AnimatedWidget
      ....
      @protected
      Widget build(BuildContext context);
      class AnimatedBuilder extends AnimatedWidget
      ....
      @override
      Widget build(BuildContext context) {
      return builder(context, child);
      }

    小结:

    • 子类重写父类的build方法,父类完成动画相关的事件半丁,子类在build方法触发时根据当前的animation的value来更新界面。基于这个设计模式,Flutter提供了如下相关Widget:

      DiagnosticableTree (diagnostics.dart)
      Widget (framework.dart)
      StatefulWidget (framework.dart)
      AnimatedWidget (transitions.dart)
      AnimatedModalBarrier (modal_barrier.dart)
      _Shaker (input_decorator.dart)
      _TabStyle (tabs.dart)
      PositionedTransition (transitions.dart)
      RotationTransition (transitions.dart)
      DefaultTextStyleTransition (transitions.dart)
      RelativePositionedTransition (transitions.dart)
      SlideTransition (transitions.dart)
      AnimatedBuilder (transitions.dart)
      SizeTransition (transitions.dart)
      DecoratedBoxTransition (transitions.dart)
      ScaleTransition (transitions.dart)
      AlignTransition (transitions.dart)
    • 上面包括了常用的各种属性动画,如果开发时动画种类比较单一则拿来即用。

    • 以上的Widget是对Widget进行了一次包装,min 命名上在原来的Widget后面加上了Translation.

  • 相关阅读:
    Selenium+Java自动化之如何优雅绕过验证码
    Java替换中使用正则表达式实现中间模糊匹配
    【转】Jmeter中使用CSV Data Set Config参数化不重复数据执行N遍
    【转】安全测试===如何查看浏览器保存的密码
    JMeter 中_time 函数的使用(时间戳、当前时间)
    TCP拆包粘包之分隔符解码器
    TCP粘包/拆包问题
    Netty 入门示例
    JDK AIO编程
    JDK NIO编程
  • 原文地址:https://www.cnblogs.com/wwoo/p/animatedwidget.html
Copyright © 2011-2022 走看看