flutter目录结构
main.dart文件
- 调用flutter的步骤
- 引入包:
import 'package:flutter/material.dart';
- 使用flutter自己给我们提供的runApp方法
-在app方法里面,就可以调用flutter的组件,在flutter里面所有组件都是类(类都是大写字母开头的)
-new的作用:创建一个实例,在flutter中允许省略new关键词
void main(){runApp(Center( //new runApp(new Center(child:Text('你好Flutter',textDirection: TextDirection.ltr,)));}
- 生成自定义组件(类),进行调用
- StatelessWidget无状态组件,前期就用这个,这个组件是不可以变化的
- StatelessWidget是一个抽象类,它里面还有一个build抽象方法
- 对于普通类继承,并非一定要重写父类方法;抽象类继承,如果子类也是一个抽象类,并不要求一定重写父类方法。如果子类不是抽象类,则要求子类一定要实现父类中的抽象方法。
- flutter里面所有东西都是组件
flutter里面所有东西都是double,40写成40.0,默认px
进行层层封装 ```dart import ‘package:flutter/material.dart’; import ‘package:english_words/english_words.dart’;
void main(){ //new可以省略 runApp(new MyApp()); } //等效写法为: //void main()=>runApp(MyApp());
//自定义组件 class MyApp extends StatelessWidget{ @override Widget build(BuildContext context) { return MaterialApp( home:Scaffold( appBar: AppBar( title:Text(‘Flutter Demo’) ), body:HomeContent(), ), theme: ThemeData( primarySwatch: Colors.yellow ) ); } }
class HomeContent extends StatelessWidget{ @override Widget build(BuildContext context){ return Center( child:Text( ‘你好Flutter hhh’, textDirection: TextDirection.ltr, style: TextStyle( fontSize: 40.0, //color: Colors.yellow color: Color.fromRGBO(244, 233, 2143, 0.5), ), ) ); } }
3. e3. e3. e3. e3. e<a name="zNKag"></a>## dynamic、var、object的区别---<a name="KbdxS"></a>### dynamic- eg:`dynamic d = "CSDN";`- 在**运行时**由系统根据该变量的 赋值 自动 推断该变量的数据类型- 动态数据类型,在运行时可以改变数据类型:eg:`d = 666;`- 在编译时会使 Dart 语言的静态语法检查失效(如调用一个不属于该字符串对象的方法,不会报错),会在运行时报错<a name="RR9eZ"></a>### var- eg:`var v = "CSDN";`- 在**运行时**由系统根据该变量的 赋值 自动 推断该变量的数据类型- var的数据类型在确定后(区别dynamic),不可更改<a name="QRqkd"></a>### Object- eg:`Object o1 = 1; Object o2 = "CSDN";`- Object是所有对象的基类,可以为其赋值子类的类型值,如上一行所示- Object的数据类型是确定的(区别dynamic),不可更改- Object中定义的方法如下```dartclass Object {const Object();external bool operator ==(other);external int get hashCode;external String toString();@pragma("vm:entry-point")external dynamic noSuchMethod(Invocation invocation);external Type get runtimeType;}
