首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Flutter入门三部曲(2) - 界面开发基础

Icon - 用于显示Flutter内置MaterialCupertino图标。 Container - Flutter,相当于div。...Row, Column- 这些小部件显示水平或垂直方向子项列表。 Stack - 堆栈显示一个孩子列表。这个功能很像CSS'position'属性。...在这里可以做: 初始化根据对应BuildContext状态 初始化根据树上父节点属性确定 注册Streams ChangeNotifiers或者其他会改变数据监听。...State删除时会调用Deactivate ,但可能会在当前帧更改完成之前重新插入。...此方法存在主要是因为State对象可以一个点移动到另一个点。 这很少使用。 9. dispose() State删除对象时调用Dispose ,这是永久性

2.6K00
您找到你想要的搜索结果了吗?
是的
没有找到

小荷才露尖尖角,Flutter应用说你好

就当它是一个组件别称就好了 或者说对于这个入口,是App.jsx,App.vue很类似的一个东西 main函数使用了js匿名函数写法,这种简写比较潇洒 3.应用结构 class...Vue3 内部数据使用refreactive包裹是受控组件 Flutter,几乎都是widget,包括一些css样式都是以widget形式提供 感觉样式写起来没有纯css快啊...build()方法 这个方法就是如何构建这个widge组件 MaterialApp是Material库中提供一个常用基础Widget,通过它可以设置应用名称,主题,语言,首页及路由列表等。...() { setState(() { _counter++; }); } 当按钮点击,就调用这个函数,改变状态会使用setState方法,这个React类组件汇总改变状态方式很像...+按钮,它onPressed属性接受一个回调函数,就是onClick,呵呵 所以逻辑是这样 点击按钮,调用自增函数 setState引起页面变化rebuild达到有状态!!!

7210

Flutter stateless stateful widget 区别

Flutter stateless stateful widget 区别 介绍 要在 Flutter 构建任何应用程序,我们必须创建一个小部件类,它是 Flutter 应用程序构建块。...Flutter 使用小部件来创建现代移动应用程序。 Flutter Widget 分为两类:无状态 Widget 有状态 Widget。...出于这个原因,外观属性小部件整个生命周期中保持不变。 当我们描述 UI 部分不依赖于任何其他小部件时,无状态小部件会很有用。无状态小部件示例是文本、图标、图标按钮凸起按钮。...一旦我们调用这个小部件并按下按钮,我们就会让文本字段自动改变。 在这种类型应用程序,我们可以通过实现. 是一种在有状态小部件类调用方法。每次调用时,此方法都会更改有状态小部件。...结论 我们已经介绍了有状态无状态小部件之间差异,以帮助您构建更好 Flutter 应用程序。示例,我们了解了无状态有状态小部件作用以及如何知道您用例需要哪个类。

2.2K10

Flutter 页面交互 | 路由跳转方式、常用API、发送接收数据、可能发生问题与知识点拓展

概述 路由跳转几种方式; 路由常用API; 路由发送接收数据使用; 路由使用可能遇到问题与解决方案; 路由跳转方式 单一页面跳转(A页面 --- B页面) 多个页面路由管理 (A页面...【小结一下刚刚跳转并传输数据方式】 上面的方式是 —— 跳转目的页, 准备一个构造函数一个全局变量,用于接收数据, 跳转到目的页时,创建一个目的页实例,并把数据传给其构造函数,完成传递;...路由常见问题及其解决方案 主题风格一致性 主页面非主页面的 跳转方式选择 可能不太一样; Scaffold组件body属性 为 具体组件名称, 接收不到 路由返回(或传递过来)数据; 目标页面...可以写main函数,也可以不写; 建议只首页写main,其他页面不要写,便于查找维护; 命名路由 路径名称 正确性(定义与使用要相符合)、 传参(参数类型)一致性问题; 1....Scaffold组件body属性 为 具体组件名称, 接收不到 路由返回(或传递过来)数据 如下, 图一注释代码, body属性 为 具体组件名称RaisedButton, 这样写法

2.9K10

Flutter | 常用组件分类、概述、实战

Flutter组件分类 文字类型 容器类型 辅助提示类型 列表类型 系统主题风格类型 交互类型 文字类型 用于描述文字, 如Text组件,一个普通文本, 属性有字体颜色、大小、下划线、删除线...、加粗、字体风格等; RichText组件,一个富文本, 可以描述丰富字体样式; 案例如下:(Text所有属性及相关意义) /// color 颜色 ///...SwitchListTile 【官方封装组件, 可以作为ListView []元素, 具有属性如下所示】 new SwitchListTile( //选中状态...系统主题有关组件 MaterialAppAppBar详解 Main.dart中有一个MaterialApp组件, 通过这个组件就可以实现很多Material风格东西: theme:主题属性...(() { // This call to setState tells the Flutter framework that something has // changed

3.9K21

FlutterKey

---- 使用 Flutter 时,我们经常会遇到一个叫做 Key 东西。Key 是 Flutter 几乎所有 widget 都具有的属性。但它并不常用而容易被忽视。...但在不需要情况下放 Key 只会浪费内存空间。因此,需要了解它应用场景。 大部分情况下不需要使用 Key。添加、删除或重排同一类型 widget 集合时,Key 非常有用。...我们倾向于像 ListView 或 Stateful widget 子级上使用 Key,因为其数据会不断变化。...将 key 添加到色块 widget 后,元素树 widget 树会使用键值进行更新。... Key 接受字母数字。它们通常用于子列表,其中每个子项是唯一且恒定。 对象键 与键相同,唯一区别是它接受一个包含数据类对象。

1.4K10

Flutter Widget框架之旅 顶

介绍 你好,世界 基本小部件 使用材料组件 处理手势 根据输入更改小部件 把它们放在一起 响应小部件生命周期事件 key 全局Key 介绍 Flutter小部件采用现代反应式框架构建,React获得灵感...无状态小部件他们父部件接收参数,它们存储final成员变量。 当一个小部件被要求build时,它会使用这些存储来为它创建小部件派生新参数。...它将它在构造函数接收到存储final成员变量,然后build函数中使用它。例如,inCart布尔可以两个可视外观之间切换:一个使用当前主题主要颜色,另一个使用灰色。...处理onCartChanged回调时,_ShoppingListState会通过添加或删除_shoppingCart产品来改变其内部状态。...例如,ShoppingList窗口部件构建了足够ShoppingListItem实例来填充其可见区域: 如果没有键,当前构建中一个条目将始终与前一个构建中一个条目同步,即使语义上,列表一个条目刚刚滚动屏幕并且不再在视口中可见

6.7K20

Spring Bean实例过程如何使用反射递归处理Bean属性填充?

二、目标 首先我们回顾下这几章节都完成了什么,包括:实现一个容器、定义注册Bean、实例化Bean,按照是否包含构造函数实现不同实例化策略,那么创建对象实例化这我们还缺少什么?...其实还缺少一个关于类是否有属性问题,如果有类包含属性那么实例化时候就需要把属性信息填充上,这样才是一个完整对象创建。...3个类,BeanReference(类引用)、PropertyValue(属性)、PropertyValues(属性集合),分别用于类其他类型属性填充操作。...当遇到 Bean 属性为 Bean 对象时,需要递归处理。最后属性填充时需要用到反射操作,也可以使用一些工具类处理。...每一个章节功能点我们都在循序渐进实现,这样可以让新人更好接受关于 Spring 设计思路。尤其是一些已经开发好类上,怎么扩充新功能时候设计更为重要。

3.3K20

Flutter』有无状态组件

Flutter,组件(Widgets)是构建用户界面的基本元素。组件分为两种类型:有状态组件(Stateful Widgets)无状态组件(Stateless Widgets)。... Center 组件子组件使用了 Row 组件,并在 Row children 属性中放置了一个 Checkbox。这样做是为了利用 Checkbox 选中状态来测试是否能够修改状态。...这里需要强调无状态组件一个关键注意事项, 无状态组件,组件被创建之后会将组件变量变成 final ,所以无法管理状态。那么我们该如何解决这个问题呢?这里就需要用到有状态组件了。...this.setState(() { this.isCheck = val as bool;});5.总结5.1.无状态组件无状态组件是不可变,意味着它们属性不能改变, 所有的都是最终。... State 对象定义变量,然后通过 setState 方法改变变量,最后 build 方法中使用变量。

27940

Flutter 构建一个 todo list 应用

所有的挂件都会调用一个状态去知道将要发生什么渲染什么。在这个例子,我们调用了 _TodoListState。这将包含应用列表及其运行逻辑。...我们告诉 flutter 一个 todo 项应该包含什么,什么字段是必须我们案例,我们有名字 checked 两个状态属性。...在上面代码片段,通过 map 方法返回每个元素 TodoItem。 然后,应用底部,我们定义了一个按钮。当按钮被点击时候,将调用 _displayDialog 方法。... Future 表明将来某个时候将返回潜在或者错误信息。...我们案例,将会返回用户输入。 对话框中有一个动作,就是当我们点击按钮时候,将会关闭对话框并且调用 _addTodoItem 函数。

1.2K10

Flutter实战 | 0 搭建「网易云音乐」APP(八、我页面)

理清楚逻辑后,来看页面如何展示: ? 一共分为两块:「创建歌单」、「收藏歌单」。 两个模块 UI 其实是一样,只不过分在了不同列表。 那么先来看一下返回数据是什么样: ?...其实就是控制歌单列表显示不显示,所以我们应该能想到一个组件:Offstage。...剩下还有一点就是「提交」按钮颜色问题,当我们没有写歌单标题时候,「提交」按钮要置灰, 这里有一个小窍门就是 如果 FlatButton onPressed 为 null,那么这个按钮颜色就是灰色...这里也是简单使用了 showModalBottomSheet来显示。 点击更改歌单信息时候弹出: ? 这里其实上面新建歌单是一样,只不过就是改了一点样式。...删除时候,调用 PlayListModel 里删除方法并且通知刷新就好了。 这样整个「我」页面大致就完成了。 4. 总结 其实这一篇没什么好总结,把前面写好东西拿来用就好了,非常简单。

1.4K00

Flutter】shared_preferences 本地存储 ( 简介 | 安装 shared_preferences 插件 | 使用 shared_preferences 流程 )

一、shared_preferences 本地存储插件简介 ---- shared_preferences 是 Flutter 提供 本地数据存取 插件 ; 不同平台 , 基于不同机制开发 ,...Get 按钮 , 下载插件包到本工程 ; 最后 , Dart 代码中导入如下代码 , 即可使用 shared_preferences ; import 'package:shared_preferences.../shared_preferences.dart'; 三、使用 shared_preferences 流程 ---- 完成了上述安装 shared_preferences 插件之后 , 才能开始使用...0;} 如果要删除数据 , 调用 shared_preferences 实例 remove 方法 ; prefs.remove('counter'); 下图是 Flutter SharedPreferences...name = await prefs.getString("name"); setState(() { textInfo = ' shared_preferences 取出数据 "

1.2K10

FlutterKey详解

Flutter,几乎每一个Widget都有一个key。虽然我们日常开发中极少会使用到这个key,但是实际上key存在是很有必要。那么key到底是什么?它有什么作用?...踩过坑 对于一个List列表,比如说银行卡列表、新闻列表等,列表单个元素UI组件我们一般是要对其进行封装复用,这样的话,循环引用时候就会出现很多同级该Widget实例。...典型一个场景就是:ListView组件Item组件公用。 那么,我们该如何去创建一个Key呢?...例如,现在有一个展示所有学生信息ListView列表,每一项itemWidget所对应学生对象均包含某个唯一属性,例如学号、身份证号等,那么这个时候就可以使用ValueKey,其就是对应学号或者身份证号...2,ObjectKey ObjectKey使用场景如下: 现有一个所有学生信息ListView列表,每一项itemWidget对应学生对象不存在某个唯一属性(比如学号、身份证号),任一属性均有可能与另外一名学生重复

2.2K31

Flutter 入门指北之弹窗提示(干货)

ListView 增加一个 BottomSheet 按钮,因为 BottomSheet 需要 context 也不能是 Scaffold 下 context,所以需要通过 Builder 进行包裹一层...AlertDialog ListView 增加一个 AlertDialog 按钮,用于点击显示 AlertDialog 用,然后加入显示 AlertDilaog 方法,并将按钮 onPressed...我们还是一样列表加个按钮,并指向显示 AboutDialog 事件。...AboutDialog 会自带两个按钮 VIEW LICENSES CLOSE,VIEW LICENSES 会跳转一个 Flutter Licenses 网页,CLOSE 会关闭,至于为什么是英文...Dialog 状态保持 假如有个需求,需要在弹出 Dialog 显示当前被改变,然后通过按钮可以修改这个 ,该如何实现。

2.1K20

Flutter使用复选框进行下拉多选

Flutter使用复选框进行下拉多选 本文向您展示了 Flutter使用复选框实现下拉多选两种不同方法。第一种方法,我们将从头开始构建多选。...第二种方法,我们将使用第三方包快速完成工作。...从头开始使用复选框创建多选 应用预览 image-20220102224407863 我们将要构建应用程序有一个专业、功能齐全多选小部件,可显示选项列表。...可以通过选中/取消选中与其关联复选框来选择或取消选择一个选项。 当按下升高按钮时,将显示多选对话框。它让用户在编程中选择他们最喜欢主题。所选主题将作为筹码显示屏幕上。...以下是我们应用程序运行方式: 构建自定义多选小部件 创建一个名为MultiSelect可重用小部件,它可以获取选项列表(您可以对这些项目进行硬编码或数据库/API 获取它们): // Multi

3.1K20

Flutter学习

Flutter,因为widget是不可变,所以没有addChild。相反,您可以传入一个函数,该函数返回一个widget给父项,并通过 布尔控制该widget创建。...Flutter一个自定义widget通常是通过组合其它widget来实现,而不是继承 某些widget属性需要单个widget(child),而其它一些属性,如action,需要一组widgets...可以Native层调用flutterdart代码,也可以flutter层调用Native代码,而作为通讯桥梁就是MethodChannel,这个类初始化时候需要注册一个渠道。...这个必须是唯一,并且使用Native层Flutter层互相对应。...‘尾随逗号’ Flutter如何使用原生控件或组件 Flutter代码通常涉及构建相当深树状数据结构,例如在一个build方法

2.6K20

原来Flutter代码是这样运行在原生系统!快来了解Flutter标准模板,感受原生系统Flutter魅力!

通过Android Studio创建Flutter应用模板,了解Flutter项目结构,分析Flutter工程与原生AndroidiOS工程有哪些联系,体验一个有着基本功能Flutter应用是如何运转...,直接将MyHomePagetitle属性作为标题使用 body,Text组件,显示了一个根据_counter属性可变文本:‘You have pushed the button this many...在这个函数,通过调用setState更新_counter属性同时,也通知Flutter框架其状态发生变化。...实现同样功能情况下,如果将Scaffold页面元素构建封装成一个新Widget类,我们该如何处理?...这样可以将Scaffold构建逻辑封装到一个独立组件,方便在其他地方重复使用,也方便后续进行修改维护。

35220

FlutterFlutter 照片墙 ( Center 组件 | Wrap 组件 | ClipRRect 组件 | Stack 组件 | Positioned 组件 | 按钮组合组件 )

; Flexible : 用于约束组件父容器展开大小组件 ; 二、Center 组件 ---- widthFactor ( 宽度因子 ) heightFactor ( 高度因子 ) 用于控制该组件宽高...组件内部 , 可以使用 Positioned 组件指定某个子组件 Stack 布局组件位置 ; 代码示例 : // 帧布局 Stack( children: [ /..., 点击时删除对应图片文件 , 并更新整体布局 ; GestureDetector 组件 child 子组件就是我们看到关闭按钮 , 先使用 ClipOval 圆形切割组件切割出一个黑色圆形 ,...中间使用 Center 组件放置一个 Icon 白色图标 , 就组成了圆形关闭按钮 ; 关闭按钮代码示例 : // 手势检测器组件 GestureDetector( // 点击事件 onTap...: (){ setState(() { // 图片集合移除该图片 _images.remove(file); }); }, // 右上角删除按钮

8.4K20
领券