В чем ошибка в Flutter приложении?
Пишу на Flutter. В классе TextButton почему-то возникает ошибка "error: Invalid constant value. (invalid_constant at [untitled2] lib\main.dart:15)", и я не понимаю почему ошибка возникает в строчке TextButton(onPressed: () {print("Ckliked");}, child: Text("push")), в месте () {print("Ckliked");}.
Кто может объяснить, почему? И кто может еще подсказать, где еще не совсем правильно написано, просто у меня много чего подчеркивается как не совсем правильное, но у человека, по курсу которого я пишу, ничего подобного нет. Если что, пишу по курсу с сайта itProger.
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(primarySwatch: Colors.red,),
home: Scaffold(
appBar: AppBar(
title: const Text("First App"),
),
body: const Center(
child: TextButton(onPressed: () {print("Ckliked");}, child: Text("push")),
// Icon(Icons.settings, size: 45, color: Colors.red,),
),
floatingActionButton: FloatingActionButton(
child: Text("Push"),
backgroundColor: Colors.red,
onPressed: () {
print("Ckliked");
},
),
),
);
}
}
Ответы (1 шт):
В чем ошибка?
В тексте ошибке сказано что у Вас невалидное значение для константы.
Когда Вы объявляете какую-либо переменную, как константу Вы обязаны гарантировать что все дочерние объекты также будут неизменными.
В Вашем же случае Вы объявили виджет Center как константу
внутри которого вы положили:
- изменяемый виджет "Кнопка",
внутри которой:- виджет Текст
которые в свою очередь константами не являются.
const Center( // <-- это константа
child: TextButton( // <-- а это уже НЕ КОНСТАНТА
onPressed: () {
print("Ckliked");
},
child: Text("push") // <-- и это НЕ КОНСТАНТА
),
),
Что делать?
Соответственно, Вы либо убираете const перед Center
Center(
child: const TextButton(
onPressed: () => print("Ckliked"),
child: const Text("push")
),
),
Либо делаете дочерние элементы также неизменяемыми
const Center(
child: const TextButton(
onPressed: () => print("Ckliked"),
child: const Text("push")
),
),