Как видно из вашего кода, ясно, что вы возвращаете совершенно новый DataTable, и из-за этого вы каждый раз получаете имя столбца.
Вы должны создать Datatable в методе _buildBody и просто вернуть Список DataRow из метода _buildListItem.
Я надеюсь, что следующий код сработает для вас. я не тестировал приведенный ниже код из-за отсутствия надлежащей настройки. добавьте комментарий, если у вас снова возникнут проблемы.
Widget _buildBody(BuildContext context) {
return StreamBuilder<QuerySnapshot>(
stream: Firestore.instance.collection('baby').snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) return LinearProgressIndicator();
return DataTable(
columns: [
DataColumn(label: Text('Name')),
DataColumn(label: Text('Votes')),
DataColumn(label: Text('Rapper\nname')),
],
rows: _buildList(context, snapshot.data.documents)
);
},
);
}
Widget _buildList(BuildContext context, List<DocumentSnapshot> snapshot) {
return snapshot.map((data) => _buildListItem(context, data)).toList();
}
List<Widget> _buildListItem(BuildContext context, DocumentSnapshot data) {
final record = Record.fromSnapshot(data);
return DataRow(cells: [
DataCell(Text(record.name)),
DataCell(Text(record.votes.toString())),
DataCell(Text(record.rName)),
]);
}