reorderable_grid
reorderable_grid copied to clipboard
SliverReorderableGrid indexes correct, grid not updating
The example using ReorderableGridView.extent
works as expected, SliverReorderableGrid
has no example.
I've put together the following based on issue 4, Card() becomes drag-able.
Problem is when dropping the Card(), the values in the grid do not change, as if the drop never completes the values in the grid remain in original order, while the output of items shows the correct expected order, how can i get the grid values to reflect new state correctly?
import 'package:flutter/material.dart';
import 'package:reorderable_grid/reorderable_grid.dart';
void main() => runApp(const MyApp());
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final items = List<int>.generate(40, (index) => index);
void _onReorder(int oldIndex, int newIndex) {
setState(() {
final item = items.removeAt(oldIndex);
items.insert(newIndex, item);
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: CustomScrollView(
slivers: [
SliverReorderableGrid(
itemCount: items.length,
itemBuilder: (context, index) =>
ReorderableGridDelayedDragStartListener(
index: index,
key: ValueKey(index),
child: Center(
child: Text(index.toString()),
),
),
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 3,
childAspectRatio: 3 / 5,
mainAxisSpacing: 10.0,
crossAxisSpacing: 10.0,
),
onReorder: _onReorder)
],
)),
);
}
}