Estou aprendendo a barra sliverapp....
aqui eu usei a visualização customscroll e quero três coisas
SliverAppBar para mostrar o título 'Transações'
**SliverPersistentHeader**. para selecionar com base no valor do interruptor (todos ou apenas números positivos)
3) SliverList . para exibir todos os dados filtrados
Estou enfrentando um problema no método onChange do Switch.
Widget build(BuildContext context) {
return SafeArea(
child:Scaffold(
body: CustomScrollView(
slivers: [
//sliver appbar
SliverAppBar(
expandedHeight: 300,
flexibleSpace: FlexibleSpaceBar(
title: Text('All'+showAll.toString()),
),
pinned: true,
floating: true,
),
SliverPersistentHeader(
delegate: _PinnedHeaderDelegate(child: Container(
height: 50,
color: Colors.white,
child: Row(children: [
Text('Show All Data'),
Switch(
value: showAll,
onChanged: (val) {
print(val);
setState(() {
showAll = val;
});
}),
],),
)),
pinned: true,
),
//sliver list
buildShowData(),
],
),
),
);
}
buildShowData() {
List<int> data;
if(showAll==true)
data=numbers;
else
data=numbers.where((element) => element>0).toList();
return SliverList(
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) {
final number=data[index];
return Card(
child: ListTile(
title: Text('$number',style: TextStyle(
color: number<0?Colors.red:Colors.green
),),
),
);
},
childCount: data.length,
),
);
}
}
envie seu código da classe _PinnedHeaderDelegate
espero que shouldRebuild esteja retornando verdadeiro...
Certifique-se de que na classe _PinnedHeaderDelegate shouldRebuild retorne true
Saída :
O interruptor está desligado:
O interruptor está ligado: