Flutter學習筆記(11)--文本組件、圖標及按鈕組件

来源:https://www.cnblogs.com/upwgh/archive/2019/07/26/11247909.html
-Advertisement-
Play Games

文本組件(text)負責顯示文本和定義顯示樣式,下表為text常見屬性 ...


如需轉載,請註明出處:Flutter學習筆記(11)--文本組件、圖標及按鈕組件

  • 文本組件

文本組件(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: <Widget>[
            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: <Widget>[
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.yaml
fluttertoast: ^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: <Widget>[
          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,
            ),
          ),
        ),
      ),
    );
  }
}

 

 附上效果截圖:

 代碼內有很詳細的註釋,如果有疑問的話,歡迎留言!!!

今天到這裡就結束了,希望每一天的博客都可以給一些像我一樣剛開始接觸Flutter人一些小小的幫助!!!

下一章節:Flutter學習筆記(12)--列表組件


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 用於Keys命令或match命令得到匹配的key時使用,註意不要與正則表達式混淆 語法:KEYS pattern / scan 0 match pattern count 10 說明:返回與指定模式相匹配的所用的keys。 該命令所支持的匹配模式如下: (1)?:用於匹配單個字元。例如,h?llo可 ...
  • 以sql server為例: 1、表值函數 用戶定義表值函數返回 table 數據類型,表是單個 SELECT 語句的結果集。 示例代碼CREATE FUNCTION Test_GetEmployeeSalary ( @EmployeeID VARCHAR(20) --參數)RETURNS TABL ...
  • 可以將以下代碼保存為backup.bat,添加計劃任務即可。 也可直接在cmd命令中複製單條語句執行,註意修改為自己的電腦路徑。 說明:--skip-lock-tables 如出現Can’t open file when using LOCK TABLES錯誤提示,可能是許可權不足導致,這裡我們在上述 ...
  • 1、創建臨時表的方法 方法一、select * into #臨時表名 from 你的表; 方法二、 create table #臨時表名(欄位1 約束條件,欄位2 約束條件,.....)create table ##臨時表名(欄位1 約束條件,欄位2 約束條件,.....) 註:以上的#代表局部臨時 ...
  • 瞭解了什麼是kafka( https://www.cnblogs.com/tree1123/p/11226880.html)以後 學習Kafka核心之消費者,kafka的消費者經過幾次版本變化,特別容易混亂,所以一定要搞清楚是哪個版本再研究。 一、舊版本consumer 只有舊版本(0.9以前)才有 ...
  • 總耗時: [SQL] CALL insert_batch();受影響的行: 1時間: 873.795s ...
  • 關於mapreduce的一些註意細節 如果把mapreduce程式打包放到了liux下去運行, 命令java –cp xxx.jar 主類名 如果報錯了,說明是缺少相關的依賴jar包 用命令hadoop jar xxx.jar 類名因為在集群機器上用 hadoop jar xx.jar mr.wc. ...
  • MySql 嚴格模式 [TOC] MySQL的sql_mode合理設置 sql model 常用來解決下麵幾類問題 sql_mode常用值 ONLY_FULL_GROUP_BY NO_AUTO_VALUE_ON_ZERO STRICT_TRANS_TABLES NO_ZERO_IN_DATE NO_ ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...