[Flutter笔记] Flutter 入门

2020-08-04  本文已影响0人  BudSwift

Flutter 的特性

Hot Restart,即 app 运行一次后,可以快速刷新
使用 StatelessWidget 封装后,每次 Command + S 后模拟器界面会自动刷新
一般使用 Android Studio 进行开发,因为支持 Flutter 插件和 Hot Restart

Flutter 常用 Widget

在 main.dart 中启动 app

void main() => runApp(MyApp())
class MyApp ....

Widget 的属性,与构造器有所不同,可以任意顺序,可以称为 key

Text("Hello", fontSize:20, color: Colors.blue,)

app 的基类 MeterialApp

MeterialApp(home: Text("Hello", 
                    /*更多属性*/)
                     

页面容器 Scaffold,包含 appBar, body, floatActionButton等属性

Scaffold(appBar: AppBar(title: Text("Brook", titleCenter: true),
         body: Text("Hello guys"),
         floatingActionButton: FloatingActionButton(child: Text("Press me")
              )

居中容器 Center,可以将一个 child 包含后使 child 居中,并占用尽可能大的空间

Center(child: Text("Hello guys")

可以 Center、FloatingActionButton 和 AppBar 不难看出,所有可见部分都是 Widget 形式存在的,都是通过 child 层层包含的。

Color 和 Font

通过 widget 的 backgroundColor 或者 color 来设置背景或者前台颜色,调用类似 Color.blue 的样式,按照 Meterial.io 的 Meterial Design 规范,都有对应的颜色属性进行使用,比如 Color.red[600]

AppBar(backgroundColor: Colors. blue)

设置文本的字体,通过 textStyle 属性

Text("hello", textStyle: TextStyle(

自定义字体,将下载的字体放入项目的 fonts 路径下,并在项目配置文件 pubspec.yaml 的 fonts 处进行配置,

fonts: 
    - family: IndieFlower
      fonts:
          - asset: fonts/IndieFlower.ttf

之后可以在 textStyle 的 fontFamily 中进行使用

TextSyle(fontFamily: "IndieFlower")

开启 Hot Restart

在 Android Studio 编辑器中输入 stl 可以自动完成构造 StatelessWidget 的代码块

class Home extends StatelessWidget {
    @override
    Widget build(buildContext context) {
        return Text("Hello")
    }

Widget 的状态:

通过 StatelessWidget 构造 home 的 app 支持在 Save 文件自动 Hot Restart

Image Widget

使用 Image widget 可以进行本地和网络图片的展示

assets:
     - assets/

之后可以以两种形式进行使用

AssetImage("assets/imag1.jpg")
// 或者
Image.asset("assets/image1.jpg")
NetworkImage("https://x/y/z.jpg")
// 或者
Image.network("https://x/y/z.jpg")

PS:上面的 Image.asset, Image.network 是 Image 的自定义构造器

Icon 和 Button

Icon widget 是系统自带的各种 icon,是 Flutter 自带的各种矢量图,可以调整颜色和大小。

Icon(Icons.add_a_photo,
        color: Colors.red,
        size: 40,
)

Button 是一个拥有点击事件的容器 widget,比如用一个 Text 作为按钮。一些封装好的特定样式的 button,比如 FlatButton 和 RaisedButton,Raised button 是具有一些阴影效果。

RaisedButton(onPressed: () {
        print("pressed");
    },
    child: Text("Press me"),
)

也可以使用自定构造器方法使用 icon 和 label 构造 button

RaisedButton.icon(onPressed: null,
                  icon: Icon(Icons.add_a_photo),
                  label: Text("拍照"),
)

也可以直接使用封装好的单一 icon 作为 button, IconButton widget

IconButton(onPressed: null,
        icon: Icon(Icons.add_a_photo),
}
上一篇下一篇

猜你喜欢

热点阅读