首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Flutter技术与实战(4)

    Widget Widget 是 Flutter 世界里对视图的一种结构化描述,你可以把它看作是前端中的“控件”或“组件”。...在 Flutter 中有一个专门的控件 CustomScrollView,用来处理多个需要自定义滚动效果的 Widget。...在 Flutter 中,因为 Widget 并不是渲染到屏幕的最终视觉元素(RenderObject 才是),所以我们无法像原生的 Android 或 iOS 系统那样,向持有的 Widget 对象获取或设置最终渲染相关的视觉信息...而关于资源的存放位置,Flutter 并没有像 Android 那样预先定义资源的目录结构,所以我们可以把资源存放在项目中的任意目录下,只需要使用根目录下的 pubspec.yaml 文件,对这些资源的所在位置进行显式声明就可以了...像这样的手势识别发生在多个存在父子关系的视图时,手势竞技场会一并检查父视图和子视图的手势,并且通常最终会确认由子视图来响应事件。

    11.6K20

    【译】Flutter架构综述

    Flutter框架相对较小;许多开发者可能会用到的更高级别的功能都是以包的形式实现的,包括像摄像头和webview这样的平台插件,以及像字符、http和动画这样的平台无关的功能,这些都是建立在核心Dart...Widget state 该框架引入了两大类widget:有状态和无状态widget。 许多widget没有可改变的状态:它们没有任何随时间变化的属性(例如,一个图标或一个标签)。...数据从像Map这样的Dart类型序列化为标准格式,然后反序列化为Kotlin(如HashMap)或Swift(如Dictionary)中的等价表示。 ?...app 因为Flutter的内容是绘制在纹理上的,而且它的widget树完全是内部的,所以在Flutter的内部模型中没有像Android视图这样的东西存在的地方,也没有在Flutter widgets...Flutter引擎需要很短的时间来初始化,因为它需要加载Flutter共享库,初始化Dart运行时,创建和运行Dart隔离,并将渲染表面附加到UI。

    6.3K10

    flutter系列之:Material主题的基础-MaterialApp

    简介 为了简化大家的使用,虽然flutter推荐所有的widget都有自己来进行搭建,但是在大框架上面,flutter提供了Material和Cupertino两种主题风格的Widgets集合,大家可以在这两种风格的继承上进行个性化定制和开发...在讲解routes之前,我们需要明白flutter中有两个和路由相关的定义,分别是routes和Navigator。...所以说onGenerateRoute是用来处理home和routers方法中没有定义的路由。你也可以将其看做是一种创建动态路由的方法。...中有个build方法,返回的widget到底是什么呢?...Hero在flutter中是一个组件,用来表示在路由切换的过程中,可以从老的路由fly到新的路由中。这样的一个飞行的动画,也叫做Hero动画。 而这个result其实是一个WidgetsApp。

    1.1K10

    flutter系列之:Material主题的基础-MaterialApp

    简介为了简化大家的使用,虽然flutter推荐所有的widget都有自己来进行搭建,但是在大框架上面,flutter提供了Material和Cupertino两种主题风格的Widgets集合,大家可以在这两种风格的继承上进行个性化定制和开发...所以说onGenerateRoute是用来处理home和routers方法中没有定义的路由。你也可以将其看做是一种创建动态路由的方法。...中有个build方法,返回的widget到底是什么呢?...Hero在flutter中是一个组件,用来表示在路由切换的过程中,可以从老的路由fly到新的路由中。这样的一个飞行的动画,也叫做Hero动画。而这个result其实是一个WidgetsApp。...WidgetsApp就是MaterialApp底层的Widget,它包装了应用程序通常需要的许多小部件。WidgetsApp的一个主要功能就是将系统后退按钮绑定到弹出导航器或退出应用程序。

    1.6K10

    Flutter中的状态管理

    toc Flutter作为出自Google的一个跨平台(iOS,Android)应用开发方案。布局方式上和React或者说React Native非常相似——组件(Widget)化。...,但是如果需要跨组件共享state的时候,你只能放在它们共有的祖先组件上,然后逐层传递,这样有势必会造成多余的组件更新。...正如React中有基于context的社区库Redux,正式使用时候InheritedWidget相对比较基础,你需要写一大堆模版类的代码来满足需求,因此推荐使用flutter社区的库scoped_model...值得注意的所有被包裹过的组件在状态变化的时候都会重新渲染,这样可能会造成不必要性能损失。...稍微了解过React的可以想得到,这个就类似于shouldComponentUpdate,不太建议使用,很容易滥用误用造成难以发现的bug。

    1.5K10

    Flutter入门三部曲(3) - 数据传递状态管理

    然后在子树的任何地方,都可以通过这样的方式来进行获取。 定义一个AppState 了解了MediaQuery的存放方式,我们可以实现自己的状态管理,这样在子组件中,就可以同步获取到状态值。...然后我们退回来,等待后确实发现了数据发生了变化~~ [21.gif] 这样就感觉可以实现一个类似EventBus的功能了~~ 总结 这边文章,主要说的是,利用Flutter自身的框架来实现,状态管理和消息传递的内容...这样子树本身可以不直接传入这个字段(这样可以避免多级的Widget时,要一层一层向下传递状态) 还可以做不同Widget中间的状态同步 ChangeNofier 继承这里类,我们就可以实现Flutter...另外,我们还可以通过第三方库,比如说 Redux和ScopeModel Rx来做这个事情。但是其基于的原理,应该也是上方的内容。...最后 通过三遍文章,对Flutter文档中一些细节做了必要的入门补充。 还没有介绍相关的 手势,网络请求,Channel和Native通信,还有动画等内容。请结合文档学习。

    1.4K00

    Flutter入门三部曲(3) - 数据传递状态管理

    然后在子树的任何地方,都可以通过这样的方式来进行获取。 定义一个AppState 了解了MediaQuery的存放方式,我们可以实现自己的状态管理,这样在子组件中,就可以同步获取到状态值。...21.gif 这样就感觉可以实现一个类似EventBus的功能了~~ 总结 这边文章,主要说的是,利用Flutter自身的框架来实现,状态管理和消息传递的内容。...这样子树本身可以不直接传入这个字段(这样可以避免多级的Widget时,要一层一层向下传递状态) 还可以做不同Widget中间的状态同步 ChangeNofier 继承这里类,我们就可以实现Flutter...另外,我们还可以通过第三方库,比如说 Redux和ScopeModel Rx来做这个事情。但是其基于的原理,应该也是上方的内容。...最后 通过三遍文章,对Flutter文档中一些细节做了必要的入门补充。 还没有介绍相关的 手势,网络请求,Channel和Native通信,还有动画等内容。请结合文档学习。

    3.8K51

    Flutter 开发实战与前景展望 - RTC Dev Meetup

    image15.png 1.4、方法当做参数传递 如下图所示,在 Dart 中方法时可以作为参数传递的,这样的形式可以让我们更灵活的组织代码的逻辑。...1.8 call Dart 为了让类可以像函数一样调用,默认都可以实现 call() 方法,同样 typedef 定义的方法也是具备 call() 条件。...image image28.GIF 同时你发现没有,代码中 parent 的 Container 在 只有100的情况下,它的 child 可以正常的画 200,这是因为我们的 paint 没有跟着 RenerObjcet...首先我们看看没有 PlatformView 之前是如何实现 WebView 的,这样会有什么问题?...1、某些功能页面,可以一套代码实现,利用插件安装引入,在web、移动app、甚至 pc 上,都可以编译出对应平台的高性能代码,而不会像 Weex 等一样存在各种兼容问题。

    2.1K20

    Flutter学习之视图体系

    在Flutter开发者文档对Widget的定义如下: widget为element(下面再描述)提供配置信息,这里可以知道widget和element存在某种联系。...如果父希望在树中的此位置更改Widget的runtimeType或key,可以通过unmounting(卸载)此Element并在此位置扩充新Widget来实现。...并且平时开发没有接触到Element,都是直接操控widget,也就是说Flutter已经帮我们对widget的操作映射到element上,我这里想象到的有点事降低开发复杂。...系统中有一个Window实例,可以从window属性来获取,看看源码: class Window { Window._(); //返回DPI,DPI是每英寸的像素点数,是设备屏幕的固件属性...PaintingBinding:绑定绘制库,处理图像缓存。 SemanticsBinding:语义层和flutter engine的桥梁,对辅助功能的底层支持。

    1.7K30

    Flutter中的Key

    这些 widget 保持某些状态,并且在 widget 树中处于相同的级别。如果没有 Key,更新这样的 widget 集合可能不会产生预期的结果。...我们倾向于在像 ListView 或 Stateful widget 的子级上使用 Key,因为其数据会不断变化。...在修改和重新渲染的过程中,Flutter 查找元素树以查看其是否已改变,以便在元素未改变时可以复用旧元素。 ---- 批注及说明: ① widget 树相当于配置,元素树相当于实例对象。...当交换色块 widget 时,它们持有 State 属性原因相应的元素匹配不上,而期望的行为没有实现。...上面三个类型中提到的值说的是控件上承载的一些数据值。通过这些值类型来构造相对于的 Key。 页面存储键 该键用来保留用户在滚动视图中的滚动位置,以便以后可以保存。

    1.8K10
    领券