前言

为了能更快的创建一个好看的应用,Flutter提供了一系列的组件。有基础组件(Basics Widgets),质感组件(Material Components)等,本篇将介绍常用的基础组件。

目录

fluter ios 原生通信 flutter原生组件_Flutter 组件

看到上面的目录,从事Android开发的同学是不是很熟悉,Flutter中组件和Android中非常的类似,毕竟都是出自Google,下面来看个效果图。

fluter ios 原生通信 flutter原生组件_Flutter AppBar_02

这里用到了目录中的所有基础组件,下面结合代码简单作简单的介绍。

import 'package:flutter/material.dart';

void main() => runApp(new MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      /*脚手架*/
      home: new Scaffold(
        /*容器,对子组件位置大小进行约束*/
        body: new Container(
          /*设置边距*/
            margin: const EdgeInsets.all(40.0),
            /*横向布局*/
            child: new Row(

              children: <Widget>[
                /* 图片组件,此处是从网路加载*/
                new Image.network(
                  "https://img03.sogoucdn.com/app/a/100520024/da58bb2c90efff416f494eecc4a5be17",
                  width: 100.0,
                  height: 200.0,
                ),

                new Container(
                  margin: const EdgeInsets.all(30.0),

                  /* 纵向布局,图片文本垂直排列*/
                  child: new Column(
                    children: <Widget>[
                      new Image.network(
                        "https://img02.sogoucdn.com/app/a/100520024/2b6acc84f93b40d33eba7c6be37efea7",
                        width: 100.0,
                        height: 200.0,

                      ),
                      /*文本*/
                      new Text("I am Flutter Image")
                    ],
                  ),
                )
              ],
            )
        ),

        /*顶部导航栏*/
        appBar: new AppBar(
          title: new Text('Flutter Basic Widgets'),
          backgroundColor: Colors.deepOrange[300],
          actions: <Widget>[
            /*系统提供Icon*/
            new IconButton(icon: new Icon(Icons.search), onPressed: null),

            new IconButton(icon: new Icon(Icons.star), onPressed: null)
          ],
        ),

        /*底部导航栏*/
        bottomNavigationBar: new BottomNavigationBar(

          items: <BottomNavigationBarItem>[
            /*导航栏条目*/
            new BottomNavigationBarItem(
              icon: new Icon(Icons.camera),
              title: new Text("Camera"),
              backgroundColor: Colors.deepOrange[300],
            ),

            new BottomNavigationBarItem(
              icon: new Icon(Icons.access_alarm),
              title: new Text("Alarm"),
              backgroundColor: Colors.deepOrange[300],
            ),
            new BottomNavigationBarItem(
              icon: new Icon(Icons.wifi),
              title: new Text("WIFI"),
              backgroundColor: Colors.deepOrange[300],
            ),

            new BottomNavigationBarItem(
              icon: new Icon(Icons.sms),
              title: new Text("SMS"),
              backgroundColor: Colors.deepOrange[300],
            ),

          ],

          /*选择颜色*/
          fixedColor: Colors.deepPurple[300],
          currentIndex: 0,
          /*固定模式:title和icon都显示*/
          type: BottomNavigationBarType.fixed,

          /*变化模式:title只有在选中时显示*/
          //type: BottomNavigationBarType.shifting,
        ),

        /*浮动页面右下角的按钮*/
        floatingActionButton: new FloatingActionButton(

          backgroundColor: Colors.red,

          onPressed: null,
        ),
      )
      ,
    );
  }
}

1.Text 文本,

显示单一静态(不可编辑)的文本,类似Android中的TextView,IOS中的label。Flutter中Text提供了两个构造函数,首先介绍下上面代码中的new Center

new Center:将子组件放置在自己的中心位置。

Text构造函数:

<!--第一种-->
Text(String data,{ Key key, TextStyle style, TextAlign textAlign, TextDirection textDirection, bool softWrap, TextOverflow overflow, double textScaleFactor, int maxLines })


<!--第二种,通过TextSpan(拓展文本)构造-->

Text.rich(TextSpan textSpan,{ Key key, TextStyle style, TextAlign textAlign, TextDirection textDirection, bool softWrap, TextOverflow overflow, double textScaleFactor, int maxLines })

2.Image和Icon

2-1.图标Icon:

在上面的代码中使用到了很多的系统图标,这些图标的类型都是IconData,通过Icons即可获取。

2-2.图片Image:

Flutter中获取图片的方式提供了以下几种:

<!--从ImageProvider获取图像,后期文章中介绍-->
Image()

<!--本资源文件 -->
Image.asset()

<!--文件形式 -->
Image.file()

<!--内存中 -->
Image.memory()

<!--网络中获取 -->
Image.network()

目前 Flutter的Image支持以下图像格式:JPEG,PNG,GIF,动画GIF,WebP,动画WebP,BMP和WBMP。


3.Row 和 Column

Row:横向布局,Column:纵向布局。这里和Android中的LinearLayout(线性布局)的 horizontal(横向)与 vertical(纵向)是一样的效果。

上图中Image1 和 Image2 + Text 所在的区域就是Row布局,子组件横向排列,区域2 ,Image2 + Text垂直纵向排列。

3.Scaffold(脚手架)

实现基本的Material Design可视化布局结构。Scaffold类提供了很多的Material 组件。

AppBar,通常显示在使用appBar属性的应用顶部。

BottomNavigationBar,通常使用bottomNavigationBar 属性在应用程序底部显示,此功能向图中所示一样,无法做定制,只能以图片和文本形式存在。

BottomAppBar,通常使用bottomNavigationBar属性显示在应用程序的底部,用来构建定制化的底部导航栏或者布局。

FloatingActionButton,圆形按钮,通常使用floatingActionButton属性显示在应用程序的右下角。

SnackBar,通常显示在应用程序底部附近的临时通知。


结尾

上述就是Flutter中基础组件的介绍,用法都是很简单。每个组件都是一个以类的形式存在。使用的时候通过new Text()这种形式来创建组件对象。下篇将介绍Flutter中其他的常用的组件。