Значение типа «Null» не может быть присвоено параметру типа » int » в конструкторе const

#flutter

Вопрос:

Я пытаюсь передать индекс, который я получаю из конструктора виджетов, на другую страницу. Но это не сработает, потому что моя созданная переменная (индекс) в моем конструкторе в основном не имеет значения. Я понимаю это … но я не знаю, как это решить. Есть какие-нибудь советы?

 class GC extends StatefulWidget {
const GC({Key? key, required this.index}) : super(key: key);
final int index;

@override
State<GC> createState() => _GCState();
}

class _GCState extends State<GC> {
  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.only(bottom: 10.0),
      child: GestureDetector(
        onTap: () {
          Navigator.push(
            context,
            MaterialPageRoute(builder: (context) => const DetailViewGC(
              name: "Test", 
              amount: "25€", 
              image: AssetImage("lib/Assets/Images/test.png"), 
              index: widget.index,
            ),
          ));
        },
        onLongPress: () {
          showDialog<String>(
            context: context,
            builder: (BuildContext context) => AlertDialog(
              title: const Text('Delete'),
              content:
                  const Text('Do you really want to delete?'),
              actions: <Widget>[
                TextButton(
                  onPressed: () => Navigator.pop(context, 'OK'),
                  child: const Text('Cancel'),
                ),
                TextButton(
                  onPressed: () {
                    Navigator.pop(context, 'OK');
                  },
                  child: const Text(
                    'Delete',
                    style: TextStyle(fontWeight: FontWeight.bold),
                  ),
                )
              ],
            ),
          );
        },
        child: const GCHero(),
      ),
    );
  }
}
 

Ответ №1:

Вы не можете использовать const ключевое слово в неконстантном контексте

Просто удалите const ключевое слово:

 MaterialPageRoute(builder: (context) => /* const */ DetailViewGC(
    name: "Test", 
    amount: "25€", 
    image: AssetImage("lib/Assets/Images/test.png"), 
    index: widget.index, // [widget.index] This is not a constant value, we cannot use it inside a const context
  ),
));
 

Комментарии:

1. Тааанк ты! 🙂