flutter学习记录

flutter学习记录,第1张

万物皆widget
StatelessWidget+state
StatefulWidget

数据传递provider
provider: ^6.0.2

页面跳转
Navigator.push(context, MaterialPageRoute(builder: (context) {
return SecondPage();
}))

常用的组件
/flutter/packages/flutter/lib/src/material/scaffold.dart

各种嵌套
obj(key:value, key2:value2)

flutter单线程
异步处理 isolate、future、
async+await组合使用

集成父类方法
with SingleTickerProviderStateMixin, PrivacyPolicy

私有方法下划线
_xxxx( )

DefaultTabController分页
https://blog.csdn.net/zuo_er_lyf/article/details/105920630

加载图片image

 @override
 Widget build(BuildContext context) {
    return Image.asset(
      ImageUtil.getImgPath(image, format: format),
      height: height,
      width: width,
      cacheWidth: cacheWidth,
      cacheHeight: cacheHeight,
      fit: fit,
      color: color,

      /// 忽略图片语义
      excludeFromSemantics: true,
    );
  }

Image.asset 返回一个

class Image extends StatefulWidget {
...
}

随机练习
未做练习
难题攻克

NavigatorUtil.jumpWithParams(context, Routes.publicQuestion, 
params:params)

顺序练习

 NavigatorUtil.jumpWithParams(context, Routes.answerQuestions, params:params);

章节练习

NavigatorUtil.jumpWithParams(context, Routes.chapterPractice, params:params);

考试记录

NavigatorUtil.jumpWithParams(context, 
Routes.personalRstRecords, params:params);

模拟考试

  NavigatorUtil.jumpWithParams(context, Routes.simulationTest, params:params);

成绩排行

NavigatorUtil.jumpWithParams(context, Routes.personaList, params:params);

图片文字组合
上中下 column

Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            LoadAssetImage(
              icon,
              width: ScreenAdapterUtil.width(36),
              height: ScreenAdapterUtil.width(36),
            ),
            Padding(
              padding: EdgeInsets.only(top: 12),
              child: Text(
                name,
                style: TextStyle(
                    fontSize: 13, color: Color.fromRGBO(32, 32, 32, 1)),
              ),
            ),
          ],
        )

左中右 row

Row(
                            children: <Widget>[
                              LoadAssetImage(
                                "answer_question/ic_error",
                                format: ImageFormat.png,
                                fit: BoxFit.cover,
                                width: 16,
                                height: 16,
                              ),
                              Gaps.hGap10,
                              Text(
                                errorCount.toString(),
                                style: TextStyle(color: Color(0xFFFD4D66), fontSize: 15),
                              ),
                            ],
                          )
  Map<String, dynamic> _notificationInfo = Map<String, dynamic>();

动态的dynamic
如果将变量声明为dynamic,则其类型会随着不断赋值动态变化类型。

dynamic a =‘abc’; //最初是一个字符串
a = 123; //然后给它分配一个int值
a = true; //然后是布尔

如果将变量声明为var,则一旦分配的类型就无法更改。
var b =‘cde’; // b是一个字符串,其类型不能更改
b = 123; // 这将无法编译 ,无法将int分配给字符串变量

但是,如果您声明一个var而不进行初始化,那么它将变为动态的:
var a; // 这实际上是一个动态类型
a = 2; //为其分配一个整数
a =‘hello!’; //为其分配一个字符串
print(a); //打印出“ hello”

dynamic:是所有Dart对象的基础类型, 在大多数情况下,通常不直接使用它,
通过它定义的变量会关闭类型检查,这意味着 dynamic x = ‘hal’;x.foo();
这段代码静态类型检查不会报错,但是运行时会crash,因为x并没有foo()方法,所以建议大家在编程时不要直接使用dynamic。

Object和dynamic的相同点:
1.都是运行时动态类型:可以任意修改类型或者声明,只要最终运行的时候能确定类型。
Object和dynamic的不同点:
1.dynamic属于自动推断类型,调用该类型的属性。
2.Object的类编译器无法推断具体类型,默认为还是Object类型,所以只能调用Object的属性和方法

var:是一个关键字,意思是“我不关心这里的类型是什么。”,系统会自动推断类型runtimeType。

Object:是Dart对象的基类,当你定义:Object o=xxx;时这时候系统会认为o是个对象,你可以调用o的toString()和hashCode()方法
因为Object提供了这些方法,但是如果你尝试调用o.foo()时,静态类型检查会进行报错;

flutter 基本数据类型:
Number:数字类型,包括 int整型和double浮点型;
int:整型,取值范围为-253到253,int类型不能包含小数点;
double:浮点型,64位(双精度)浮点数;
num:数字类型,int和double都是num类型的子类,num类型包括的运算 *** 作有:+、-、*、/、以及移位 *** 作>>,num类型包括的常用方法有:abs、ceil和floor;
String:字符串
Boolean:布尔
List:数组
Map:集合 symbol:符号

定义一个方法对象
typedef NotificationUsingBlock2222 = Function(dynamic object);

NotificationUsingBlock2222 就是对象的名称,是一个方法,传入实现。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/993546.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存