Flutter - ListTile的循环

时间:2017-06-14 23:19:00

标签: dart flutter

我不确定如何通过循环生成多个ListTiles,例如for()

我不知道Flutter如何用于渲染小部件,因为在Angular 2中只需在布局中插入*ngFor指令(html)。

我在Flutter文档中找不到这样的主题。

main.dart

import 'package:flutter/material.dart';

void main() {
  runApp(new MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: "Myapp",
      home: new HomePage(),
    );
  }
}

class HomePage extends StatelessWidget {

  @override
  Widget build(BuildContext context) => new Scaffold(
    appBar: new AppBar(
      backgroundColor: new Color(0xFF26C6DA),
    ),
    body: new ListView (
      children: <Widget>[
        new Card(
          child: new Column(
            mainAxisSize: MainAxisSize.min,
            children: <Widget>[
              const ListTile(
                leading: const Icon(Icons.album),
                title: const Text('The Enchanted Nightingale'),
                subtitle: const Text('Music by Julie Gable. Lyrics by Sidney Stein.'),
              ),
            ],
          ),
        ),
      ],
    )    
  );
}

2 个答案:

答案 0 :(得分:4)

List.generate()对于制作小型列表非常有用。对于较大或无限列表,请使用ListView.builder()代替ListView

screenshot

import 'package:flutter/material.dart';

void main() {
  runApp(new MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: "Myapp",
      home: new HomePage(),
    );
  }
}

class HomePage extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        backgroundColor: new Color(0xFF26C6DA),
      ),
      body: new ListView.builder(
        itemBuilder: (BuildContext context, int index) {
          return new Card(
            child: const ListTile(
              leading: const Icon(Icons.album),
              title: const Text('The Enchanted Nightingale'),
              subtitle: const Text(
                'Music by Julie Gable. Lyrics by Sidney Stein.',
              ),
            ),
          );
        },
      ),
    );
  }
}

答案 1 :(得分:0)

以下是List.generate的示例:-

import 'package:flutter/material.dart';

void main() {
  runApp(new MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      debugShowCheckedModeBanner: false,
      title: "Myapp",
      home: new HomePage(),
    );
  }
}

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: Text('List.generate demo'),
      ),
      body: new ListView(
        padding: const EdgeInsets.all(8),
        children: new List.generate(
          10,
          (index) => new ListTile(
            title: Text('Item $index'),
          ),
        ),
      ),
    );
  }
}

enter image description here