Как мне использовать ReorderableListView, в частности, что я помещаю в «onReorder» - PullRequest
0 голосов
/ 06 ноября 2018

Мне нужна помощь, чтобы понять, как использовать этот виджет. Прямо сейчас я могу заставить предметы быть перетаскиваемыми, но они не остаются на своем новом месте. Я уверен, что это потому, что я использую onReorder неправильно, но я не могу найти объяснение того, как. Я не понимаю или не знаю, что он делает, и я просто продолжал пробовать что-то, пока он хотя бы не смог скомпилироваться.

class MainScreen extends StatefulWidget {

  @override
  MainScreenState createState() => new MainScreenState();
}

class MainScreenState extends State<MainScreen> {
  Widget build(context) {
    final   List<Widget> reorderList = <Widget>[
   Container(key: Key('1'), child:  Icon(Icons.ac_unit),),
   Container(key: Key('2'), child:  Icon(Icons.access_alarm),),
   Container(key: Key('3'), child:  Icon(Icons.access_time),),
   Container(key: Key('4'), child:  Icon(Icons.accessibility),),
   Container(key: Key('5'), child: Icon(Icons.account_box),),
   Container(key: Key('6'), child:  Icon(Icons.account_balance),),
     ];


    return Scaffold(
        appBar: AppBar(
          title: Text('test'),
          actions: <Widget>[
            IconButton(
              icon: Icon(Icons.refresh),
              onPressed: () {
                setState(() {});
          },
            )
          ],
        ),
        drawer: Drawer(child: SideDrawer(context)),
        body: ReorderableListView(
          onReorder: (reorderList, reorderlist) => reorderList ,
          children: reorderList,

        ));
  }
}

Страница, которая приводит здесь для тщательности, выглядит следующим образом:

class App extends StatelessWidget {
  build(context) { 
    return Provider(
      child: MaterialApp(

    theme: themeData,
    title: '',
    home:  MainScreen(),
    onGenerateRoute: routes,

  ),
 );
}

Любая помощь будет очень признательна, Я не понимаю Документацию для ReorderableListView , поэтому, пожалуйста, не просто связывайте меня там.

Большое спасибо за любую помощь, все будет оценено.

1 Ответ

0 голосов
/ 08 ноября 2018

Все, что вам нужно, здесь . В частности:

  void _onReorder(int oldIndex, int newIndex) {
    setState(() {
      if (newIndex > oldIndex) {
        newIndex -= 1;
      }
      final Container item = reorderList.removeAt(oldIndex);
      reorderList.insert(newIndex, item);
    });
  }

и вставить его как:

...
reOrder: _onReorder
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...