本文為大家分享了Flutter實現(xiàn)列表項的具體代碼,供大家參考,具體內(nèi)容如下
創(chuàng)建achievement_view_list_item.dart文件,具體的實現(xiàn)每一個列表項。
import 'package:flutter/material.dart';// 創(chuàng)建類,成就目標class Target { // 常量,構(gòu)建函數(shù) const Target({ // 自變量,目標名稱 this.name, // 自變量,目標獎勵 this.reward }); // 最終值,成就目標名稱 final String name; // 最終值,成就目標獎勵 final String reward;}// 定義數(shù)據(jù)類型,目標改變回調(diào)typedef void TargetChangedCallback( // 類型參數(shù),目標 Target target, // 類型參數(shù),是否新目標 bool nowTarget);// 創(chuàng)建類,成就視圖列表項目,繼承StatelessWidget(無狀態(tài)的控件)class AchievementViewItem extends StatelessWidget { // 構(gòu)造函數(shù) AchievementViewItem({ // 目標參數(shù),傳遞目標 Target target, // 自變量,是否新目標 this.nowTarget, // 自變量,對目標的改變 this.onTargetChanged }) : // 接收傳遞的目標 target = target, // 調(diào)用父類 super( /* * 控件和元素的標識符: * 將其對象的標識用作其值 * 用于將控件的標識綁定到用于生成該控件的對象的標識 */ key: new ObjectKey(target) ); // 類成員,存儲目標 final Target target; // 類成員,存儲是否新目標 final bool nowTarget; // 類成員,對目標的改變 final TargetChangedCallback onTargetChanged; // 類函數(shù),獲得顏色 Color _getColor(BuildContext context) { /* * 是否新目標 * 是:返回灰色 * 否:返回主題的背景色 */ return nowTarget ? Colors.black54 : Theme.of(context).primaryColor; } // 類函數(shù),獲得文本樣式 TextStyle _getNameTextStyle(BuildContext context) { // 如果不是新目標,返回文本樣式控件 if (!nowTarget) return new TextStyle( // 繪制文本的大小:16.0 fontSize: 16.0, // 繪制文本時使用的顏色:黑色 color: Colors.black, // 繪制文本時加粗字體 fontWeight: FontWeight.bold, ); // 返回文本樣式控件 return new TextStyle( fontSize: 16.0, // 繪制文本時使用的顏色:灰色 color: Colors.black54, // 繪制文本時加粗字體 fontWeight: FontWeight.bold, // 在文本附近繪制的裝飾:文本中繪制一條橫線 decoration: TextDecoration.lineThrough, ); } // 類函數(shù),獲得文本樣式 TextStyle _getRewardTextStyle(BuildContext context) { // 如果不是新目標,返回文本樣式控件 if (!nowTarget) return new TextStyle( // 繪制文本的大小:13.0 fontSize: 13.0, // 繪制文本時使用的顏色:黑色 color: Colors.black, ); // 返回文本樣式控件 return new TextStyle( // 繪制文本的大小:13.0 fontSize: 13.0, // 繪制文本時使用的顏色:灰色 color: Colors.black54, // 在文本附近繪制的裝飾:文本中繪制一條橫線 decoration: TextDecoration.lineThrough, ); } // 覆蓋此函數(shù)以構(gòu)建控件 @override Widget build(BuildContext context) { // 返回值:創(chuàng)建列表項,通常包含圖標和一些文本 return new ListItem( // 當用戶點擊此列表項時調(diào)用 onTap: () { // 調(diào)用對目標的改變函數(shù) onTargetChanged(target, !nowTarget); }, // 要在標題之前顯示的控件:創(chuàng)建圓形頭像控件 leading: new CircleAvatar( // 填充圓形的顏色:獲得顏色函數(shù) backgroundColor: _getColor(context), // 子控件:文字控件 child: new Text('
主站蜘蛛池模板:
桃源县|
大城县|
屏山县|
泊头市|
龙海市|
浦江县|
芒康县|
白城市|
民勤县|
当涂县|
嵊州市|
马山县|
日喀则市|
大宁县|
泰和县|
昌乐县|
长垣县|
宁河县|
兴业县|
澄江县|
房山区|
广宗县|
台安县|
商都县|
千阳县|
上高县|
台北县|
昭通市|
晋江市|
怀仁县|
吉隆县|
怀远县|
德江县|
遂川县|
墨脱县|
科技|
义马市|
宣汉县|
合川市|
乳源|
望奎县|