小工具知识网

当前位置: 首页 > 行业知识 > Flutter(五):ListView、Card

行业知识

Flutter(五):ListView、Card

2026-10-25 22:11:43 来源:互联网转载

ListView

import 'package:flutter/material.dart';class Item {  final Icon icon;  final T title;  final K secondary;  const Item({required this.icon, required this.title, required this.secondary});}class ListViewPage extends StatefulWidget {  const ListViewPage({super.key});  @override  State createState() => _ListViewPageState();}class _ListViewPageState extends State {  List items = const [    Item(icon: Icon(Icons.face), title: "赵", secondary: "Zhao"),    Item(icon: Icon(Icons.face_2), title: "钱", secondary: "Qian"),    Item(icon: Icon(Icons.face_3), title: "孙", secondary: "Sun"),    Item(icon: Icon(Icons.face_4), title: "李", secondary: "Li"),    Item(icon: Icon(Icons.face_5), title: "周", secondary: "Zhou"),    Item(icon: Icon(Icons.face_6), title: "吴", secondary: "Wu"),  ];  @override  Widget build(BuildContext context) {    return Scaffold(      appBar: AppBar(title: const Text('ListView 布局')),      body: SingleChildScrollView(        child: Wrap(          children: [            const Text('ListView'),            SizedBox(              height: 100,              child: ListView(                scrollDirection: Axis.horizontal,                children: [                  Container(width: 100, color: Colors.red),                  const VerticalDivider(),                  Container(width: 200, color: Colors.orange),                  const VerticalDivider(),                  Container(width: 150, color: Colors.yellow),                  const VerticalDivider(),                  Container(width: 300, color: Colors.green),                  const VerticalDivider(),                  Container(width: 250, color: Colors.cyan),                ],              ),            ),            const Text('ListView.separated'),            ListView.separated(              shrinkWrap: true,              physics: const NeverScrollableScrollPhysics(),              itemBuilder: (BuildContext context, int index) {                return ListTile(                  leading: Container(                    width: 40,                    height: 40,                    decoration: BoxDecoration(                      color: Colors.black12,                      borderRadius: const BorderRadius.all(Radius.circular(20)),                      border: Border.all(color: Colors.cyan, width: 1),                    ),                    child: items[index].icon,                  ),                  title: Text(items[index].title),                  subtitle: Text(items[index].secondary),                  trailing: const Icon(Icons.chevron_right),                  iconColor: Colors.blue,                );              },              separatorBuilder: (BuildContext context, int index) {                return const Divider(color: Colors.grey);              },              itemCount: items.length,            ),          ],        ),      ),    );  }}

Card

import 'package:flutter/material.dart';class CardPage extends StatefulWidget {  const CardPage({super.key});  @override  State createState() => _CardPageState();}class _CardPageState extends State {  @override  Widget build(BuildContext context) {    return Scaffold(      appBar: AppBar(title: const Text('Card 布局')),      body: Wrap(        children: [          Card(            margin: const EdgeInsets.all(10),            child: Column(              children: [                Container(                  height: 50,                  padding: const EdgeInsets.only(left: 10, right: 10),                  child: Row(                    mainAxisAlignment: MainAxisAlignment.spaceBetween,                    children: [                      const Text('Card Title', style: TextStyle(fontSize: 18)),                      TextButton(                        onPressed: () => print('more...'),                        style: TextButton.styleFrom(minimumSize: Size.zero),                        child: const Text('more'),                      ),                    ],                  ),                ),                const Divider(height: 0),                Image.network(                  'https://gw.alipayobjects.com/zos/rmsportal/JiqGstEfoWAOHiTxclqi.png',                  width: double.infinity,                  fit: BoxFit.cover,                ),                const Divider(height: 0),                ListTile(                  leading: Container(                    width: 40,                    height: 40,                    decoration: const BoxDecoration(                      color: Colors.lightBlue,                      borderRadius: BorderRadius.all(Radius.circular(20)),                    ),                    child: const Icon(Icons.face, color: Colors.white),                  ),                  title: const Text('Card Title'),                  subtitle: const Text('This is the description ...'),                ),                const Divider(height: 0),                SizedBox(                  height: 50,                  child: Row(                    mainAxisAlignment: MainAxisAlignment.spaceEvenly,                    children: [                      IconButton(onPressed: () => print('设置'), icon: const Icon(Icons.settings), color: Colors.grey),                      const VerticalDivider(),                      IconButton(onPressed: () => print('编辑'), icon: const Icon(Icons.edit), color: Colors.grey),                      const VerticalDivider(),                      IconButton(onPressed: () => print('更多'), icon: const Icon(Icons.more), color: Colors.grey),                    ],                  ),                ),              ],            ),          ),        ],      ),    );  }}

上一篇:怎么删除谷歌商店服务器?

下一篇:怎么投诉传奇服务器?