flutter学习--基础组件

开发中常用的基础组件,包括Text、Image、TextField、Text.rich、ClipOval等。

一、Text

文本组件,相当于android中的TextView控件。
(1)看一下源码属性:
在这里插入图片描述
data是必传参数,其他是可选参数。

(2)使用

class TextWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
        appBar: AppBar(
          title: Text("TextWidget"),
        ),
        body: Container(
          width: 200,
          color: Colors.green,
          child: Text(
            "测试", //文本信息
            style: TextStyle( //设置字体样式
              color: Colors.red, //字体颜色
              fontSize: 25, //字体大小
            ),
            maxLines: 1,//最大显示多少行
            textDirection: TextDirection.ltr,//文本显示方向,从左到右
            textAlign: TextAlign.center,//文本居中显示
            softWrap: true,//是否自动换行
            overflow: TextOverflow.ellipsis, //当文本超过显示范围时,剩余文本显示方式,省略号显示
          ),
        ));
  }
}

二、Text.rich

相当于android中的SpannableString效果。
(1)使用:

class TextRichWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
      appBar: AppBar(
        title: Text("TextRichWidget"),
      ),
      body: Container(
        child: Text.rich(
          TextSpan(children: [
            TextSpan(text: "链接地址:", style: TextStyle(fontSize: 16)),
            TextSpan(
                text: "www.baidu.com", style: TextStyle(color: Colors.blue)),
          ]),
          textAlign: TextAlign.start,
        ),
      ),
    );
  }
}

(2)效果:
在这里插入图片描述

三、TextField

文本输入组件,相当于android中的EditText。
(1)看一下源码主要属性:
在这里插入图片描述
只列举了常用的属性
(2)使用

class TextFieldWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
      appBar: AppBar(
        title: Text("TextFieldWidget"),
      ),
      body: Container(
        child: TextField(
          controller: TextEditingController(text: "显示内容"), //输入框内容

          decoration: InputDecoration(
              hintText: "TextFieldWidget", //输入框为空时显示的提示内容
              hintStyle: TextStyle(), //样式,和Text一样
              border: OutlineInputBorder(//边框
                borderRadius: BorderRadius.circular(5.0),
              ),
              contentPadding: EdgeInsets.all(30) //文本距离边框的内边距
              ),
          style: TextStyle(), 样式,和Text一样
          onChanged: (value) {//内容改变的回调
            print(value);
          },
          onSubmitted: (value) { //按回车的回调
            print(value);
          },
          enabled: true, //是否禁用
          obscureText: true, //是否是密码
        ),
      ),
    );
  }
}

(3)效果
在这里插入图片描述

四、Image

图片组件,相当于android中的ImageView。
(1)看一下源码主要属性:
在这里插入图片描述
(2)使用方式1—加载本地图片:
需要先将图片在 pubspec.yaml 中进行配置。如下:
在这里插入图片描述
在这里插入图片描述
需要严格按照格式进性配置。加载代码如下:

class ImageWidget extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
      appBar: AppBar(
        title: Text('ImageWidget'),
      ),
      body: Container(
        child: Image(
          image: AssetImage("assets/images/ic_launcher.png"),
          width: 100,
          height: 100,
        ),
      ),
    );
  }
}

当然还有一种简写方式:

class ImageWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
      appBar: AppBar(
        title: Text('ImageWidget'),
      ),
      body: Container(
        child: Image.asset("assets/images/ic_launcher.png"),
        width: 100,
        height: 100,
      ),
    );
  }
}

(3)使用方式2—加载网络图片:
使用 NetworkImage,代码如下:

class ImageWidget extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
      appBar: AppBar(
        title: Text('ImageWidget'),
      ),
      body: Container(
        child: Image(
          image: NetworkImage("xxxxxx"),
          width: 100,
          height: 100,
        ),
      ),
    );
  }
}

当然还有一种简写方式:

class ImageWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
      appBar: AppBar(
        title: Text('ImageWidget'),
      ),
      body: Container(
        child: Image.network('xxxx'),
        width: 100,
        height: 100,
      ),
    );
  }
}

当然,除了这些,还有以下方式加载:

  • Image.file
  • Image.memory

五、ClipOval

相当于android中的圆形图片
(1)使用

class ClipOvalWidget extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
      appBar: AppBar(
        title: Text("ClipOvalWidget"),
      ),
      body: Container(
        child: ClipOval(
          child: Container(
            width: 100,
            height: 100,
            color: Colors.red,
          ),
        ),
      ),
    );
  }
}

(2)效果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值