Я продолжаю получать сообщение об ошибке, что заголовок, параметр «заголовок» не может иметь значение «нуль», но неявное значение по умолчанию равно нулю, и то же самое касается фона и значка,
Пожалуйста, я не уверен, поскольку я новичок во Flutter, откуда возникла проблема, может кто-нибудь помочь мне проверить, откуда мои ошибки. Заранее спасибо.
Это мой файл main.dart,
import 'package:simpleapp/models/sidebar.dart';
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
//stless - stateless widget..
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
child: SidebarRow(item: sidebarItem[0]), //where i called the item
),
),
);
}
}
class SidebarRow extends StatelessWidget {
SidebarRow({required this.item});
final SidebarItem item;
@override
Widget build(BuildContext context) {
return Row(
children: [
Container(
width: 42.0,
height: 42.0,
padding: EdgeInsets.all(10.0),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(14.0),
gradient: item.background,
),
child: item.icon),
SizedBox(width: 12), // used for spacing..
Container(
child: Text(
item.title,
style: TextStyle(
fontSize: 16.0,
fontWeight: FontWeight.w800,
color: Color(0xff242629)),
),
),
],
);
}
}
The sidebar.dart — файл класса SidebarItem с дополнительными демонстрационными данными
import 'package:flutter/material.dart';
class SidebarItem {
//how can i initialize this class to accept null values..
SidebarItem({ this.title, this.background, this.icon });
String title;
LinearGradient background;
Icon icon;
}
//add sample data...
var sidebarItem = [
SidebarItem(
title: "Home",
background: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
Color(0xFF00AEFF),
Color(0xFF0076FF),
],
),
icon: Icon(Icons.home, color: Colors.white)
)];
Пожалуйста, как я могу отсортировать эти ошибки и заставить переменные правильно инициализироваться, а не устанавливаться в ноль. Спасибо.
3 ответа
Здесь у вас есть два примера:
Если каждая переменная экземпляра будет инициализирована (ваш случай):
- Добавьте необходимое ключевое слово в именованные параметры
class SidebarItem {
String title;
LinearGradient background;
Icon icon;
const SidebarItem({
required this.title,
required this.background,
required this.icon,
});
}
Или константа, если она не будет мутировать
class SidebarItem {
final String title;
final LinearGradient background;
final Icon icon;
SidebarItem({
required this.title,
required this.background,
required this.icon,
});
}
Если каждая переменная экземпляра может быть нулевой
class SidebarItem {
String? title;
LinearGradient? background;
Icon? icon;
SidebarItem({
this.title,
this.background,
this.icon,
});
}
Добавьте ?
для необязательных полей. Добавьте required
для обязательных параметров
class SidebarItem {
SidebarItem({ this.title, required this.background, required this.icon });
String? title;
LinearGradient background;
Icon icon;
}
См. объяснение установки значений, допускающих значение NULL, здесь
В вашем случае вам не хватает ключевого слова required
перед параметром в объявлении конструктора
Похожие вопросы
Связанные вопросы
Новые вопросы
android
Android - это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфоны, планшеты, автомобили, телевизоры, одежда, стекло, IoT). Для тем, связанных с Android, используйте специальные теги Android, такие как android-intent, android-activity, android-адаптер и т. Д. Для вопросов, не связанных с разработкой или программированием, но связанных с платформой Android, используйте эту ссылку: https: // android.stackexchange.com .