flutter

A collection of 2 posts

flutter

Flutter中的数据传递:InheritedWidget, InheritedModel

Flutter中标准的数据传递方法是通过属性传递,类似于react中的props。对于复杂点的UI,这样有时候会比较繁琐。一个属性可能需要跨越很多层传递给子子组件。 对于跨层传递,flutter原生支持如下两种方案:InheritedWidget和InheritedModel。 InheritedWidget有些Flutter使用经验的开发同学,可能比较熟悉这样的代码。 通过Theme访问当前的界面风格:Theme.of(context).primaryColor 通过MediaQuery访问屏幕大小:MediaQuery.of(context).size 这两个类都是通过InheritedWidget实现的典范。调用组件可以通过Theme.of方法找到上层最近的Theme父组件,跨层获取到其属性,同时会建立调用组件和上层组件的观察者关系。当上层组件属性修改的时候,触发调用组件的更新。 我们通过下面简单的计数器例子,演示下InheritedWidget如何用。如下两个类:InheritedContainer包含了状态计数num属性,Counter通过inheritFromWidgetOfExactType方法找到上层的InheritedContainer组件,并获取计数num并展示在一个按钮里面。 class InheritedContainer extends InheritedWidget { static InheritedContainer of(BuildContext context) { return context.

  • Amadeus
    Amadeus
Flutter轻松入手
flutter

Flutter轻松入手

Flutter是Google推出的移动端跨平台开发技术。比起大家比较熟悉的原生开发,RN, weex等技术栈,它有以下优势: 编译为原生ARM机器代码,执行效率更高。 建立在一套声明式API之上,app逻辑更容易理解。(类似于react的setState/build/diff/render的机制,老一代传统UI是命令式API) 底层架构在skia绘图层之上,抛弃了OEM widget,因此跨平台行为一致,少有兼容性bug。 开发效率高。 使用flutter技术可以提升终端开发效率,得益于它的以下几个特性: 1. hot reload(热更新)能获得更快的界面反馈,不用坐等编译 2. Android

  • Amadeus
    Amadeus