首页 > 解决方案 > 如何分配> 列出变量?

问题描述

如何使用此 DB 功能一一显示数据?

Future<List<Data>> display() async {
    //final Database db = await database;
    var db = await db1;
    final List<Map<String, dynamic>> maps = await db.query('syncTable');

    return List.generate(maps.length, (i) {
      return Data(
        syn_TableName: maps[i]['syn_TableName'],
        syn_ChangeSequence: maps[i]['syn_ChangeSequence'],
      );
    });
  }

标签: dartflutter

解决方案


您可以使用FutureBuilder来使用您的display()方法。然后在里面FutureBuilder你可以AsyncSnapshot.data用来获取你ListData元素。

在下一步中,您可以调用List.map()将您的小部件映射Data到小部件。在本例中,我使用ListTile来显示:

snapshot.data.map((data) {
  return ListTile(
    title: Text(data.syn_TableName),
    subtitle: Text(data.syn_ChangeSequence),
  );
}).toList(), 

这是您可以尝试的最小工作示例:

演示

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: FutureBuilder<List<Data>>(
            initialData: [],
            future: display(),
            builder: (context, snapshot) {
              return ListView(
                children: snapshot.data.map((data) {
                  return ListTile(
                    title: Text(data.syn_TableName),
                    subtitle: Text(data.syn_ChangeSequence),
                  );
                }).toList(),
              );
            }),
      ),
    );
  }

  Future<List<Data>> display() async {
    return List.generate(15, (i) {
      return Data(
        syn_TableName: 'syn_TableName $i',
        syn_ChangeSequence: 'syn_ChangeSequence $i',
      );
    });
  }
}

class Data {
  final String syn_TableName;
  final String syn_ChangeSequence;

  Data({this.syn_ChangeSequence, this.syn_TableName});
}

推荐阅读