Flutter中怎么实现一个文本组件
创始人
2024-12-22 05:22:30
0次

•文本组件

文本组件(text)负责显示文本和定义显示样式,下表为text常见属性

Text组件属性及描述

属性名      类型      默认值      说明              data      String            要显示的文本              maxLines      int      0      文本要显示的最大行数              style      TextStyle      null      文本样式,可定义文本的字体大小、颜色、粗细等              textAlign      TextAlign      TextAlign.center      文本水平方向的对齐方式,取值有center、end、justify、left、right、start、values              textDirection      TextDirection      TextDirection.ltr      文本的书写方向,如从左到右、从右到左              textScaleFactor      double      1.0      字体的缩放系数,比如,如果此属性设置的值为1.5,那么字体会被放大到150%,也就是说比原来大了50%              textSpan      TextSpan      null      文本块,TextSpan里可以包含文本内容及样式

老样子,按照惯例附上Demo,创建多个文本组件来展示不同的文本样式,比如不同的颜色,不同的自号,不同的线形等。

import 'package:flutter/material.dart';void main() => runApp(DemoApp());class DemoApp extends StatelessWidget{ @override Widget build(BuildContext context) { return new MaterialApp(  title: '文本组件Demo',  home: new Scaffold(  appBar: new AppBar(   title: Text('文本组件Demo'),  ),  body: new Column(   children: [   new Text(    '第一个文本Demo',    style: new TextStyle(    color: Colors.amberAccent,    fontSize: 20,    ),   ),   new Text(    '第二个文本Demo',    style: new TextStyle(    color: Colors.deepOrange,    fontSize: 20,    ),    textScaleFactor: 1.5,//放大50%   ),   new Text(    '第三个文本Demo(瞎写的瞎写的瞎写的瞎写的瞎写的瞎写的瞎写的瞎写的瞎写的瞎写的瞎写的瞎写的瞎写的瞎写的瞎写的瞎写的瞎写的)',    style: new TextStyle(    color: Colors.blue,    fontSize: 20,    ),    textAlign: TextAlign.end,//右对齐   ),   new Text(    '''第四个文本Demo    换到第二行,看看能不能显示的出来呢''',    style: new TextStyle(    fontSize: 20,    color: Colors.green,    ),    maxLines: 2,//最大显示2行   ),   new Text(    '第五个Demo,设置水平方向文案超出屏幕后,显示...(瞎写的字瞎写的字瞎写的字瞎写的字瞎写的字瞎写的字瞎写的字瞎写的字)',    style: new TextStyle(    fontSize: 20,    color: Colors.black,    ),    overflow: TextOverflow.ellipsis,//水平方向超出屏幕显示...   )   ],  ),//垂直方向排列  ), ); }}

除了这些,还有很多其他的属性等着我们去尝试,我就不一一都写出来了,我也是刚开始接触Flutter,有些地方还不是很理解,希望以后接触的多了,可以豁然开朗吧!!!给大家看一下效果图:

•图标及按钮组件

•图标组件

图标组件(Icon)为展示图标的组件,该组件不可交互,要实现可交互,可以考虑使用IconButton组件,图标组件相关的组件有一下几个:

  1.IconButton:可交互的Icon

  2.Icons:框架自带Icon集合

  3.IconTheme:Icon主题

  4.ImageIcon:通过AssetImages或者其他图片显示Icon

图标组件常用属性表

属性名      类型      默认值      说明              color      Color      null      图标的颜色              icon      IconData      null      展示的具体图标,可以使用Icons图标列表中的任意一个图标即可,如Icons.phone表示一个电话的图标              style      TextStyle      null      文本样式              size      Double      24.0      图标的大小,注意要带上小数位              textDirection      TextDirection      TextDirection.ltr      文本排列方向

附上Demo代码:

import 'package:flutter/material.dart';void main() => runApp(DemoApp());class DemoApp extends StatelessWidget{ @override Widget build(BuildContext context) { return new MaterialApp(  title: '图标组件Demo',  home: new IconDemo(), ); }}class IconDemo extends StatelessWidget { @override Widget build(BuildContext context) { return new Scaffold(  appBar: new AppBar(  title: new Text('图标组件Demo'),  ),  body: new Center(  child: new Icon(   Icons.android,//图标Icon   color: Colors.green,//图标颜色,设置为绿色,原本的颜色是黑色的   size: 150.0,//Icon的大小  ),  ), ); }}

附上效果截图:

•图标按钮组件

图标按钮组件(IconButton)是基于Material Design风格的组件,他可以响应按下事件,并且按下时会带一个水波纹的效果,如果它的onPressed回调函数为null,那么这个按钮处于禁用的状态,并且不可以按下。

IconButton组件属性及描述

属性名      类型      默认值      说明              alignment      AlignmentGeometry      Alignment.center      定义IconButton的Icon对齐方式,默认为居中,Alignment是可以设置x,y偏移量的              icon      Widget      null      展示的具体图标,可以使用Icons图标列表中的任意一个图标              color      Color      null      图标颜色              disabledColor      Color      ThemeData.disableColor      图标组件禁用的颜色              iconSize      double      24.0      图标大小              onPressed      VoidCallBack      null      当按钮按下时会触发此回调事件              tooltip      String      “”      当按钮按下时的组件提示语

写一个Demo,实现点击IconButton,出发onPressed回调并toast一句话,附上Demo代码:

import 'package:flutter/material.dart';import 'package:fluttertoast/fluttertoast.dart';void main() => runApp(DemoApp());class DemoApp extends StatelessWidget{ @override Widget build(BuildContext context) { return new MaterialApp(  debugShowCheckedModeBanner: false,  title: 'IconButtonDemo',  home: new IconButtonDemo(), ); }}class IconButtonDemo extends StatelessWidget { @override Widget build(BuildContext context) { return new Scaffold(  appBar: AppBar(  title: Text('IconButton Demo'),  leading: Icon(Icons.menu),  actions: [   IconButton(   icon: Icon(Icons.search),   )  ],  ),  body: new Center(  child: new IconButton(   icon: Icon(Icons.add_circle_outline),   iconSize: 50.0,   tooltip: '用户按下了按钮',   disabledColor: Colors.green,   onPressed: (){    Fluttertoast.showToast(    msg: '点击了IconButton并且Toas了一句话',    toastLength: Toast.LENGTH_LONG,    textColor: Colors.deepOrange,    gravity: ToastGravity.BOTTOM    );  }),  ), ); }}

附上效果截图:

上面的代码除了演示了IconButton的简单使用,还对AppBar做了一些出了,在title的左右增加了两个图片,当然你也可以对其设置点击事件

注:这里和大家说一下在Flutter中怎么Toast出提示语,首先在pubspec.yaml引入fluttertoast包,点击Packages get,然后在你需要toast的地方import该库

//pubspec.yamlfluttertoast: ^2.2.11//import对应库import 'package:fluttertoast/fluttertoast.dart';

• 凸起按钮组件

突起按钮组件(RaisedButton),往往我们在开发过程中,不会一直用系统的图标,那么如果一个按钮上需要我们添加自定义的文本,这样的按钮要怎么实现呢?

import 'package:flutter/material.dart';import 'package:fluttertoast/fluttertoast.dart';void main() => runApp(DemoApp());class DemoApp extends StatelessWidget{ @override Widget build(BuildContext context) { return new MaterialApp(  debugShowCheckedModeBanner: false,  title: 'IconButtonDemo',  home: new IconButtonDemo(), ); }}class IconButtonDemo extends StatelessWidget { @override Widget build(BuildContext context) { return new Scaffold(  appBar: AppBar(  title: Text('IconButton Demo'),  leading: Icon(Icons.menu),  actions: [   IconButton(   icon: Icon(Icons.search),   )  ],  ),  body: new Center(  child: new RaisedButton(   padding: const EdgeInsets.all(10.0),//内间距   splashColor: Colors.blue,//点击时按钮的颜色   elevation: 10,   shape: BeveledRectangleBorder(//带斜角的长方形边框   borderRadius: BorderRadius.all(Radius.circular(5))//圆角   ),   onPressed: (){   Fluttertoast.showToast(    msg: '点击了IconButton并且Toas了一句话',    toastLength: Toast.LENGTH_LONG,    textColor: Colors.deepOrange,    gravity: ToastGravity.BOTTOM   );   },   //按钮内的文本   child: new Text(   '我是RaisedButton按钮',   style: TextStyle(    color: Colors.green,    fontSize: 20.0,   ),   ),  ),  ), ); }}

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...