Вы только возвращаете список, если в нем есть 1 или 0 элементов (базовый регистр). Вам нужен оператор return и в первом блоке, где вы делаете рекурсивный вызов, иначе вы переходите к базовому регистру, возвращаете список длины-1 на следующий уровень, а затем возвращаете None
остальную часть вверх. Итак, вы хотите выглядеть следующим образом:
def process(my_list):
# Do some stuff.
if len(my_list) > 1:
return process(my_list) #If you don't return this result, you return None
else:
print(my_list)
return my_list
Теперь каждый случай (а не только базовый случай) имеет возвращаемое значение, поэтому возвращаемое значение будет распространять все обратно до вашего первоначального вызова.
return new Card(
child: new Container(
padding: EdgeInsets.all(10.0),
child: new Row(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
CircleAvatar(
backgroundColor: Colors.grey,
backgroundImage: new NetworkImage("${document['Picture']}"),
radius: 40.0,
),
SizedBox(
width: 10.0,
),
Column(
children: <Widget>[
Text(document['name']),
Text('subtitle'),
],
)
],
),
),
);
Вы можете использовать что-то вроде этого.
Это то, что вы хотите, просто добавьте ListTile
body: StreamBuilder(
stream: Firestore.instance.collection('Doctors').snapshots(),
builder:
(BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (!snapshot.hasData)
return const Center(child: CircularProgressIndicator());
return ListView(
padding: const EdgeInsets.only(top: 8.0),
children:
snapshot.data.documents.map((DocumentSnapshot document) {
return new Card(
child: new Container(
padding: EdgeInsets.all(10.0),
child: new Row(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
CircleAvatar(
backgroundColor: Colors.grey,
backgroundImage:
new NetworkImage("${document['Picture']}"),
radius: 40.0,
),
SizedBox(width: 10.0,
),
new ListTile(
title: Text(document['name']),
subtitle: Text('subtitle'),
],
),
),
);
}).toList(),
);
},
),
),
Я думаю, вы пытаетесь отобразить список данных, но я не уверен, действительно ли вам нужен стиль карты, потому что у ваших карт нет разрыва. Для вашего дизайна вы можете использовать List Tile, которые имеют leading
для кругового изображения или аватара, title
, subtitle
и trailing
в случае необходимости. вот пример
return new Card(
child: ListTile(
leading: CircleAvatar(
backgroundColor: Colors.grey,
backgroundImage: new NetworkImage("${document['Picture']}"),
radius: 40.0,
),
title: Text(document['name']),
subtitle: Text('subtitle'),
),
);
без карты
return ListTile(
leading: CircleAvatar(
backgroundColor: Colors.grey,
backgroundImage: new NetworkImage("${document['Picture']}"),
radius: 40.0,
),
title: Text(document['name']),
subtitle: Text('subtitle'),
);