Кнопки переключения, неудачная строка подтверждения 188 поз. 12: 'isSelected! = Null неверно - PullRequest
0 голосов
/ 04 августа 2020
• 1000 не работает,

Мой код следующий:


  List<bool> isSelected = [false, false, false];
  FocusNode focusNodeButton1 = FocusNode();
  FocusNode focusNodeButton2 = FocusNode();
  FocusNode focusNodeButton3 = FocusNode();
  List<FocusNode> focusToggle;

  @override
  void initState() {
    // ignore: todo
    // TODO: implement initState
    super.initState();
    focusToggle = [focusNodeButton1, focusNodeButton2, focusNodeButton3];
  }

  @override
  void dispose() {
    // Clean up the focus node when the Form is disposed.
    focusNodeButton1.dispose();
    focusNodeButton2.dispose();
    focusNodeButton3.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Row(
      mainAxisAlignment: MainAxisAlignment.spaceBetween,
      children: <Widget>[
        Column(
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.end,
          children: <Widget>[
            Padding(
              padding: const EdgeInsets.only(left: kDefaultPadding / 2),
              child: ToggleButtons(
                borderColor: Colors.black,
                fillColor: Colors.white,
                borderWidth: 2,
                borderRadius: BorderRadius.circular(2),
                selectedBorderColor: kMaincolor,
                selectedColor: kMaincolor,
                focusNodes: focusToggle,
                children: <Widget>[
                  Padding(
                    padding: EdgeInsets.all(5),
                    child: Text(
                      "Lingkar Teman",
                      style: TextStyle(fontSize: 15),
                    ),
                  ),
                  Padding(
                    padding: EdgeInsets.all(5),
                    child: Text(
                      "Orang Lain",
                      style: TextStyle(fontSize: 15),
                    ),
                  ),
                  Padding(
                    padding: EdgeInsets.all(5),
                    child: Text(
                      "Semua",
                      style: TextStyle(fontSize: 15),
                    ),
                  ),
                ],
                isSelected: isSelected,
                onPressed: (int index) {
                  setState(() {
                    isSelected[index] = !isSelected[index];
                  });
                },
              ),
            ),
          ],
        ),

1 Ответ

0 голосов
/ 04 августа 2020

Код мне нравится. Возможная проблема может заключаться в том, что вы написали список isSelected после запуска приложения, и теперь вы пытаетесь перезагрузить приложение в горячем режиме, поэтому оно принимает его как null, и эта проблема возникает. Попробуйте перезапустить приложение или инициализировать isSelected в сборке. Более того, вы не можете вернуть состояние массива просто так, так как вам нужно проверить индекс. Вы можете заменить содержимое setState() следующим

setState(() {
    for (int i = 0; i < isSelected.length; i++) {
        isSelected[i] = i == index
    }
});
...