#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. Тааанк ты! 🙂