mercredi 11 avril 2018

CheckBox isn't work

I'm making an application that has a ListView whis Checkbox for each element.

But when you select an item, the checkbox does not change its state.

No visual indication of item state change. A ListTile with a Checkbox. In other words, a checkbox with a label.

The entire list tile is interactive: tapping anywhere in the tile toggles the checkbox.

import 'package:flutter/material.dart';

void main() => runApp(new MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: new Scaffold(
        appBar: new AppBar(
          title: const Text('Выберите компетенцию:'),
        ),
        body: new ListView.builder(
          itemBuilder: (BuildContext context, int index) =>
              new EntryItem(data[index]),
          itemCount: data.length,
        ),
      ),
    );
  }
}

// One entry in the multilevel list displayed by this app.
class Entry {
  Entry(this.isCheck, this.title, [this.children = const <Entry>[]]);
  final String title;
  final List<Entry> children;
  bool isCheck;
}

// The entire multilevel list displayed by this app.
final List<Entry> data = <Entry>[
  new Entry(false,
    ' Компетентность',
    <Entry>[
      new Entry(false,
        'Опыт работы и практические знания',
        <Entry>[
          new Entry(false,"Обладае...каждого."),
          new Entry(false,"Обладает ...ями."),
          new Entry(false,"Обладает ....ими "
              "знан.....ным делом."),
          new Entry(false,"Опыт ра..ты."),
          new Entry(false,"Опыт ....аботой."),
        ]),
      new Entry(false,'Знания по специальности', <Entry>[
        new Entry(false,
            "Имеет обш..авать ценные консультации."),
        new Entry(false,
            "Имеет обшир.деятельности д.ется нед.аточно."),
        new Entry(false,
            "Имеет х.ых воп.сах."),
        new Entry(false,
            "Имеет до.аточ.ьше."),
        new Entry(false,
            "Име.ность по друг.опросам."),
        new Entry(false,
            "Явно не достает.осах."),
      ]),
      new Entry(false,'Самостоятельность', <Entry>[
        new Entry(false,"Может.ая чьей-ли.и или указания."),
        new Entry(false,"В основн.шать большинство. у.ания."),
        new Entry(false,"Мо.ет.но."),
        new Entry(false,"Многи.ях."),
        new Entry(false,"Воп...ниях."),
        new Entry(false,"Не м.заниях."),
      ]),
      new Entry(false,'Самообразование', <Entry>[
        new Entry(false,"Пост.те."),
        new Entry(false,"Мн.оты."),
        new Entry(false,"Успеш.ости."),
        new Entry(false,"Пони.ости."),
        new Entry(false,"При.тно."),
        new Entry(false,"Отри.елу."),
      ]),
    ],
  ),
  new Entry(false,
    'Работоспособность',
    <Entry>[
      new Entry(false,'Результативность', <Entry>[
        new Entry(false,"В св.лег."),
        new Entry(false,"В св.ктива."),
        new Entry(false,"Работ.м."),
        new Entry(false,".ота.ывы."),
        new Entry(false,"Работ.ные с.ы."),
        new Entry(false,"Р.ям."),
      ]),
      new Entry(false,'Отношение к работе', <Entry>[
        new Entry(false,"Очен.ргию."),
        new Entry(false,"Любит .боту."),
        new Entry(false,"К сво.овестно."),
        new Entry(false,"К ....ушно."),
        new Entry(false,"Не люб.выполняет ..совес...."),
        new Entry(false,".работу и повсюду ..."),
      ]),
      new Entry(false,'Интенсивность работы', <Entry>[
        new Entry(false,"В рабо...рых."),
        new Entry(false,"В ра...сть."),
        new Entry(false,"В раб...ть."),
        new Entry(false,"В раб...вность."),
        new Entry(false,"В ра...ность."),
        new Entry(false,"В раб...ании."),
      ]),
    ],
  ),
  new Entry(false,
    'Деловитость',
    <Entry>[
      new Entry(false,'Соблюдение сроков', <Entry>[
        new Entry(false,'Все....коиться.'),
        new Entry(false,'Обы...ся.'),
        new Entry(false,'В осн....й не подводит.'),
        new Entry(false,'Не все.....рищей.'),
        new Entry(false,'Часто .....их товарищей.'),
        new Entry(false,'Пост..........иться.'),
      ]),
      new Entry(false,'Качество работы', <Entry>[
        new Entry(false,'Работа.....ошибок.'),
        new Entry(false,'Рабо......зультатах.'),
        new Entry(false,'Редк.........ьные.'),
        new Entry(false,'Допуск.....зультатах.'),
        new Entry(false,'Часто до.....льно грубые.'),
        new Entry(false,'Постоян...ибки.'),
      ]),
      new Entry(false,'Отношение к нововведениям',
        <Entry>[
          new Entry(false,'Люб.....ом режиме.'),
          new Entry(false,'Порой......работе.'),
          new Entry(false,'Стремитс.....ачинание.'),
          new Entry(false,'Может....низации.'),
          new Entry(false,'Порой пр.....заций.'),
          new Entry(false,'Проявля......дения.'),
        ],
      ),
    ],
  ),
];

// Displays one Entry. If the entry has children then it's displayed
// with an ExpansionTile.
class EntryItem extends StatelessWidget {
  const EntryItem(this.entry);

  final Entry entry;

  Widget _buildTiles(Entry root) {
    if (root.children.isEmpty)
      return new Column(
        children: <Widget>[
          new CheckboxListTile(
            title: new Text(
              root.title,
              style: new TextStyle(fontSize: 14.0),
            ),
            value: entry.isCheck,
            onChanged: (bool value) {
              setState(() {
                entry.isCheck = value;
              });
            },
          ),
          new Divider(height: 16.0, indent: 0.0),
        ],
      );

    return new ExpansionTile(
      key: new PageStorageKey<Entry>(root),
      title: new Text(root.title),
      children: root.children.map(_buildTiles).toList(),
    );
  }

  @override
  Widget build(BuildContext context) {
    return _buildTiles(entry);
  }

  void setState(Function param0) {}
}




Aucun commentaire:

Enregistrer un commentaire