I am implementing a chat and there is a problem when items removes from list. If I delete several items from bottom of the CustomScrollView, the scroll position offsets up depending on sum of height of deleting items. How can I prevent it?
import 'package:flutter/material.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return const MaterialApp(
home: MyStatefulWidget(),
);
}
}
class MyStatefulWidget extends StatefulWidget {
const MyStatefulWidget({Key? key}) : super(key: key);
@override
State<MyStatefulWidget> createState() => _MyStatefulWidgetState();
}
class _MyStatefulWidgetState extends State<MyStatefulWidget> {
List<int> list = List.generate(30, (i) => i + 1).reversed.toList();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
leading: IconButton(
icon: const Icon(Icons.clear),
onPressed: () {
setState(() {
list.removeRange(0, 5);
});
},
),
),
body: CustomScrollView(
reverse: true,
slivers: <Widget>[
SliverList(
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) {
return Container(
alignment: Alignment.center,
color: Colors.blue[200 + list[index] % 4 * 100],
height: 100,
child: Text('Item: ${list[index]}'),
);
},
childCount: list.length,
),
),
],
),
);
}
}