リスト 4.30


//flutter
import 'package:flutter/material.dart';

void main() {
  return runApp(TestPage());
}

//リスト4.30
class TestPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'ReorderableListView',
      home: Scaffold(
        appBar: AppBar(title: Text('ReorderableListView')),
        body: MyStatefulWidget()
      )
    );
  }
}

class MyStatefulWidget extends StatefulWidget {
  const MyStatefulWidget({Key? key}) : super(key: key);

  @override
  State<MyStatefulWidget> createState() => _MyStatefulWidgetState();
}

class _MyStatefulWidgetState extends State<MyStatefulWidget> {
  final List<int> _itemList = List<int>.generate(50, (int i) => i);

  @override
  Widget build(BuildContext context) {
    return ReorderableListView(
      onReorder: (int oldIndex, int newIndex) {
        setState(() {
          if (oldIndex < newIndex) {
            newIndex -= 1;
          }
          final item = _itemList.removeAt(oldIndex);
          _itemList.insert(newIndex, item);
        });
      },
      children: <Widget> [
        for (int i = 0; i < _itemList.length; i++)
          ListTile(
            key: Key('$i'),
            trailing: Icon(Icons.more_vert),
            subtitle: Text('Item${_itemList[i]}'),
            title: Text('タイトル'),
          ),
      ],
    );
  }
}