Created
May 10, 2021 18:05
-
-
Save jonasjuni/807ce6fa2707385fca195f19ba8b9760 to your computer and use it in GitHub Desktop.
Checkbox and ReorderableListView animation problem
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/// Flutter code sample for ReorderableListView | |
import 'package:flutter/material.dart'; | |
void main() => runApp(const MyApp()); | |
/// This is the main application widget. | |
class MyApp extends StatelessWidget { | |
const MyApp({Key? key}) : super(key: key); | |
static const String _title = 'Flutter Code Sample'; | |
@override | |
Widget build(BuildContext context) { | |
return MaterialApp( | |
title: _title, | |
home: Scaffold( | |
appBar: AppBar(title: const Text(_title)), | |
body: const MyStatefulWidget(), | |
), | |
); | |
} | |
} | |
/// This is the stateful widget that the main application instantiates. | |
class MyStatefulWidget extends StatefulWidget { | |
const MyStatefulWidget({Key? key}) : super(key: key); | |
@override | |
_MyStatefulWidgetState createState() => _MyStatefulWidgetState(); | |
} | |
/// This is the private State class that goes with MyStatefulWidget. | |
class _MyStatefulWidgetState extends State<MyStatefulWidget> { | |
final List<int> _items = List<int>.generate(2, (int index) => index); | |
@override | |
Widget build(BuildContext context) { | |
final ColorScheme colorScheme = Theme.of(context).colorScheme; | |
final Color oddItemColor = colorScheme.primary.withOpacity(0.05); | |
final Color evenItemColor = colorScheme.primary.withOpacity(0.15); | |
return ReorderableListView( | |
padding: const EdgeInsets.symmetric(horizontal: 40), | |
children: <Widget>[ | |
for (int index = 0; index < _items.length; index++) | |
ListTile( | |
leading: Checkbox( | |
key: Key('$index'), | |
onChanged: (v) => null, | |
value: _items[index].isOdd ? true : false, | |
), | |
key: Key('$index'), | |
tileColor: _items[index].isOdd ? oddItemColor : evenItemColor, | |
title: Text('Item ${_items[index]}'), | |
), | |
], | |
onReorder: (int oldIndex, int newIndex) { | |
setState(() { | |
if (oldIndex < newIndex) { | |
newIndex -= 1; | |
} | |
final int item = _items.removeAt(oldIndex); | |
_items.insert(newIndex, item); | |
}); | |
}, | |
); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment