首页
学习
活动
专区
圈层
工具
发布

Flutter 基础知识点总结

: 在Dart中,一切都是对象,所有的对象都是继承自Object; Dart是强类型语言,但可以用var或 dynamic来声明一个变量,Dart会自动推断其数据类型,dynamic类似c#; 没有赋初值的变量都会有默认值...) 图 maps 符号 symbols 数据类型 Dart 中的所有东西都是对象,包括数字、函数等,它们都继承自 Object,并且对象的默认值都是 null(包括数字); var 可以定义变量,如 var...变量与常量 变量 在Dart中,变量支持以下几种申明方式: 1.使用 var 声明变量,默认值为 null var a;//null a = 10; 2.显示类型声明 int a;//null...a = 10; 3.使用 var 声明,可赋予不同类型的值 var a; //null a = 10; //int a = "Dart"; //string 4.使用 final 声明只能赋值一次的变量...所以方法也可以作为对象赋值给其它变量,也可以作为参数传递给其它方法。

5.7K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    带你深入 Dart 解析一个有趣的引用和编译实验

    本篇主要通过一个简单例子,讨论一下 Dart 代码里一个有趣的现象。 我们都知道 Dart 里一切都是对象,就连基础类型 int 、double 、bool 也都是 class 。...让我们看这段代码编译后的逻辑,如下所示代码,可以看到上述代码编译后, print 函数里指向的永远是 idx 这个 int* 指针,当我们点击时,最终打印出来的都是最后的 idx 的值。...如下代码所示,我们在 for 循环里增加了一个 index 参数,把每次 idx 都赋值给 index ,这样点击打印出来的结果,就会是点击对应的 index 。...让我们看新编译出来的代码,如下所示,可以看到对了 core::int* index = idx; 这段代码,然后回忆下前面所说的,Dart 里基本类型都是对象,而 operator 操作符运算后返回新的对象...理论上,应该是属于变量捕获: 对于全局变量,不会捕获,通过全局变量访问。 对于局部变量,自动变量将会捕获,且是值传递。

    1.5K20

    flutter_bloc使用解析---骚年,你还在手搭bloc吗!

    ,其它的变量赋相同值麻烦 进入某个模块,进行初始化操作:复杂的逻辑运算,网络请求等,入口在哪定义 准备工作 说明 这里说明下,文章里把BlocBuilder放在顶层,因为本身页面非常简单,也是为了更好呈现页面结构...,因为我这边设置的俩个变量全是必用的,读写均要,就设置公有类型,不用下划线“_”去标记私有了。...,其它的变量都在内部赋值好了,我们不需要去关注;这就大大的便捷了页面中有很多变量,只需要变动一俩个变量的场景 注意:如果变量的数据未改变,界面相关的widget是不会重绘的;只会重绘变量被改变的widget...实际在view中反复是要用BlocBuilder去更新view,写起来有点麻烦,这里我们可以写一个,将其中state和context变量,往提出来的Widget方法传值,也是蛮不错的 大家保持观察者模式的思想就行了...,把处理好的、符合要求的数据返回给view层的观察者就行了。

    6.4K41

    【Flutter】底部导航栏页面框架 ( BottomNavigationBar 底部导航栏 | PageView 滑动页面 | 底部导航与滑动页面关联操作 )

    , 改变该变量值后 , 通过 setState 方法更新 UI 显示 ; 设置点击方法 : BottomNavigationBar 的 onTap 属性设置点击方法 , 传入 index 索引 , 该索引值是被点击的按钮索引..., 设置给 Scaffold 的 body 字段 , 主要设置以下三个参数 ; 控制器 : 在 PageView 的 controller 参数设置 , PageController 类型 , 主要用于控制...BottomNavigationBar 的当前索引值 , 并更新 UI 界面 ; 显示组件 : 在 children 参数中设置 Widget 数组即可 , 组件类型只要是 Widget 就行 ; 代码示例..._currentIndex 控制 , 将该 _currentIndex 变量设置给底部导航栏 BottomNavigationBar 的 currentIndex 参数 , 之后可以通过调用 setState.../// 注意该 List items /// 中的按钮顺序 , 要与 PageView 中的页面顺序必须保持一致

    6.3K20

    同时搞定Android和iOS的Dart语言(1):Dart初探

    Dart语言允许指定数据类型,也可以不指定数据类型,如果在定义一个变量时未指定数据类型,Dart编译器会根据右侧初始化变量的值自动推断变量的数据类型。...例如,一个变量在初始化时是字符串类型,在运行时,可以将一个整数赋给该变量,那么这时这个变量的数据类型就是int类型了。这种强类型编程语言中是绝对不允许的。...var number = 20; number = "hello world"; // 会抛出异常,不能将字符串类型的值赋给int类型的变量 其实现在比较流行静态语言动态化,也就是为静态语言添加动态语言的特征...null, s4是dynamic数据类型,因为在定义变量时未初始化 s1 = 20; // 抛出异常,因为不能将整数赋给一个字符串变量 } Swift语言 var s1 = "hello...= 20 //抛出异常,不能将整数赋给一个字符串变量 Go语言 s1 := "hello world" // 定义s1变量,并自动识别s1为字符串类型 var s2

    2.1K30

    fish_redux使用详解---看完就会用!

    的使用 计数器 fish_redux正常情况下的流转过程 fish_redux各模块怎么传递数据 页面跳转 A ---> B(A跳转到B,并传值给B页面) B ---> A(B返回到A,并返回值给A页面...,并传值给SecondPage页面) SecondPage ---> FirstPage(SecondPage返回到FirstPage,并返回值给FirstPage页面) 实现 从上面效果图上看,很明显...方法是初始化变量和接受页面传值的,这边我们给他赋个初始值 class FirstState implements Cloneable { ///传递给下个页面的值 static...,所以reducer模块可以不写,看看该页面的流程 view ---> action ---> effect(pop当前页面,并携带值返回) state 该模块的变量和FirstPage类型,就不阐述了...initState里面通过args变量获取上个页面传递的值,上个页面传值需要传递Map类型,这边通过key获取相应的value class SecondState implements Cloneable

    3.1K43

    Flutter 构建完整应用手册-持久化

    建立 在我们开始之前,我们需要将shared_preferences插件添加到我们的pubspec.yaml文件中: dependencies: flutter: sdk: flutter...支持的类型 虽然使用键值存储非常简单方便,但它有一些限制: 只能使用原始类型:int, double, bool, string 和 string list 它不是用来存储大量数据,因此不适合作为应用程序缓存...在iOS上,这对应于NSTemporaryDirectory()返回的值。 在Android上,这是getCacheDir()返回的值。 文档目录:应用程序的目录,用于存储只有它可以访问的文件。...MethodChannel是Flutter用来与主机平台进行通信的类。 在我们的测试中,我们无法与设备上的文件系统进行交互。 我们需要与我们的测试环境的文件系统进行交互!...为了模拟方法调用,我们可以在我们的测试文件中提供一个setupAll函数。 该功能将在测试执行之前运行。

    2K20

    Flutter学习

    StatefulWidget类本身是不变的,但是 State类在widget生命周期中始终存在. stateful widget将自身的构建委托给State对象,State对象的build函数负责构建该...在Flutter中,因为widget是不可变的,所以没有addChild。相反,您可以传入一个函数,该函数返回一个widget给父项,并通过 布尔值控制该widget的创建。...); //get请求,请求返回值为Future类型,即其返回值未来是一个String类型的值 getData() async { //async关键字声明该函数内部有代码需要延迟执行...自动生成实体类 dynamic ,var、object dynamic 所有dart 对象的基础类型,在大多数情况下,不直接使用它 通过它定义的变量会关闭类型检查,这意味着 dynamix x= ‘hal...MethodChannel与原生交互 将 Flutter 集成到现有应用 Flutter 与 Android 的相互通信 File > New > New Module > flutter 新建到自己项目目录下

    3.6K20

    使用BottomNavigationBar来定义底部导航栏

    BottomNavigationBar有如下常见属性: items,这是一个装有 BottomNavigationBarItem 类型元素的List,即底部导航条按钮的集合 iconSize,icon...有几点需要着重说明: 1,我们是给Scaffold组件中的 bottomNavigationBar 参数配置 BottomNavigationBar 类型的值,如下: Scaffold( appBar...'Category.dart'; import 'Setting.dart'; 如果你导入的文件file在文件夹A的里面,或者在A的子文件夹的里面,并且当前文件与A属于同一个路径级别,也就是说属于同一个文件夹下...,那么要在当前文件中导入file的话,那么file的路径就需要从文件夹A依次往下去找。...当底部导航栏的item很多或者尺寸比较大,从而导致BottomNavigationBar会被挤压,这时的展示效果就会很不美观,具体的效果大家可以去试一试,此时我们需要将type属性值设置为BottomNavigationBarType.fixed

    2K30

    Flutter

    因为FlatButton的类型与Element树中相对应位置的Element的类型不同,Flutter将会从各自的树上删除这个Element和相对应的ContainerRender,然后Flutter将会重建与...四、Dart 的基础 未初始化的变量的值都是 null,所有类型都是对象类型,都继承自顶层类型 Object Dart 内置了一些基本类型,如 num、bool、String、List 和 Map Dart...map2['name'] = 'Tom'; map2['sex'] = 'male'; map2.forEach((k,v) => print('${k}: ${v}')); 常量定义 const 表示变量在编译期间即能确定的值...final 则不太一样,用它定义的变量可以在运行时确定值,而一旦确定后就不可再变 final name = 'Andy'; const count = 3; var x = 70; var y...这个函数在 State 的生命周期中只会被调用一次,所以我们可以在这里做一些初始化工作,比如为状态变量设定默认值。

    2.6K40

    构建实用的Flutter文件列表:从简到繁的完美演进

    通过文件列表,我们可以清晰地了解有哪些文件、它们的类型是什么,甚至可以对它们进行操作,比如打开、删除、移动等等。...构建文件列表的动机 在我们的日常生活中,我们可能会遇到一些这样的场景:比如我们想要查找某个重要的文档,但是却不记得放在了哪个文件夹里;又或者我们想要分享一张照片给朋友,但是却找不到它在哪个文件夹下。...在这里,我们将创建一个新的文件,命名为file_list.dart,这将是我们文件列表的主要文件。 2....list'); } } @override Widget build(BuildContext context) { // 构建文件列表界面 } } 在这段代码中,我们在组件初始化阶段调用了...如果请求成功,我们将文件名列表存储到files变量中,并通过setState方法更新UI,展示真实的文件列表数据。 3.

    1.5K12

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

    , 多了一个换行功能 , Wrap 组件可以有多行水平线性布局 ; 这是照片墙实现的主要组件 , Wrap 组件中由一组 Image 组件 List 集合作为子组件 ; 代码示例 : // 可自动换行的水平线性布局...Wrap( // 设置水平边距 spacing: 间距值 ( double 类型 ), // 设置垂直间距 runSpacing: 间距值 ( double 类型 ), children...: Widget>[ 设置若干子组件 ] ) 运行效果 : Center 组件填充整个屏幕 , Wrap 组件是 Center 的子组件 , 在中心显示 ; 参考博客 : 【Flutter..._image; /// 存放获取的图片集合, 初始化时为空 ListFile> _images = []; // 图片获取引擎 final picker = ImagePicker...类型 , Widget>[] }).toList() , ) ), floatingActionButton:

    9.1K20

    Flutter第7天--字体图标+综合小案例+Android代码交互

    ,并且把服务端的数据解析了 今天就是使用这些数据,来填充静态界面,api接口介绍和NoteBean昨天已完成 封装一个获取数据的方法:简单说下用法: style是类型:Android是A ;SpringBoot...动态获取数据填充.png //定义一个成员变量 List _notes = []; @override void initState() { super.initState...刚才是数据没有分类型,现在点击底部导航,按范围进行展示 get(style: "area/A", num: 30)//这样就是展示又有安卓类的文章 - - android_stack.dart...添加成员变量 这里我默认加载完,做分页的话,再添加个_count的成员变量就行了 String style = "area/A"; //页面打开,默认加载安卓页 @override void...加参数.png ---- 2.3:加返回值的方法调用: 举什么例子,我想了一会,就来个MD5码吧 ?

    2.6K30

    flutter 起步

    window 安装教程flutter中文官网mac 安装教程flutter中文官网安装完成后解压到非高权限路径,在讲环境变量配置到path中图片Flutter安装目录的flutter文件下找到flutter_console.bat...中的继承也有和Java不一样的地方:Flutter中的子类可以访问父类中的所有变量和方法,因为Flutter中没有公有、私有的区别上下文对象是整个APP Widget树结构中的Widget话柄,每个Wideget...全局变量和静态成员变量,这些变量不会在热刷新时更新。修改了main函数中创建的根控件节点,Flutter在热刷新后只会根据原来的根节点重新创建控件树,不会修改根节点。...某个类从普通类型转换成枚举类型,或者类型的泛型参数列表变化,都会使热刷新失败。...actions → List - 一个 Widget 列表,代表 Toolbar 中所显示的菜单,对于常用的菜单,通常使用 IconButton 来表示;对于不常用的菜单通常使用 PopupMenuButton

    6.4K20
    领券