Если вы не против использования Akka, я бы посмотрел на потоки Akka; особенно Alpakka , чтобы сделать это. Нет необходимости изобретать велосипед, если вам это не нужно.
При этом код имеет следующие проблемы:
Опять же, я очень рекомендую вам взглянуть на Akka Streams с Alpakka, потому что вы можете делать то, что хотите, с помощью этого инструмента, написать кучу кода самостоятельно.
Вы можете добавить верхний и нижний foo и bar как первый и последний элементы списка. У ListView
будет list.length + 2
предметов.
body: Column(children: [
Text('foo'),
Expanded(
child: ListView.builder(
itemCount: list.length + 2,
itemBuilder: (context, index) {
if (index == 0)
return Text("foo");
else if (index < list.length + 1)
return Text("$index");
else
return Text('bar');
},
),
),
]),
Вы должны использовать CustomScrollView
CustomScrollView(
slivers: <Widget>[
SliverToBoxAdapter(
child: Text("Text"),
),
SliverList(
delegate: SliverChildListDelegate( [
Container(
height: 200.0,
decoration: BoxDecoration(color: Colors.orange),
),
Container(
height: 400.0,
decoration: BoxDecoration(color: Colors.pink),
),
Container(
height: 500.0,
decoration: BoxDecoration(color: Colors.blue),
)
]),
),
SliverToBoxAdapter(
child: Text("Text"),
),
],
)
. Обратите внимание, что вы можете использовать SliverChildListDelegate или SliverChildBuilderDelegate
Попробуйте это
body:
Column(
children: [
Text('foo'),
Expanded(
child: Container(
child: ListView.builder(
shrinkWrap: true,
itemBuilder: .......,
itemCount: .....,
),
),
),
Text('bar')
]
)
,
Этот код работал для меня.