大家好,我是新手,正在开发新的应用程序...我有一个问题,我做不到...我想从另一个类中调用List的元素,我编写了一些代码,但我无法调用上另一堂课,请回答我...我需要您的帮助...
项目解释: 我有一个底部导航栏。第一个屏幕“详细信息”,我想显示列表元素的“状态”。第二个屏幕“个人资料”,我想显示列表元素的“年”。第一屏
我有列表“ SERVIS_IHALE_DATA”和构造函数“ IhaleData”。这些是我的数据,我想从另一个类中调用它们。
列表和构造器:
const SERVIS_IHALE_DATA = [
IhaleData(
id: 'User1',
brand: 'Volkswagen',
year: '2011',
status: 'Onarım'
),
];
class IhaleData {
final String id;
final String brand;
final String year;
final String status;
const IhaleData(
{
this.id,
this.brand,
this.year,
this.status
});
}
我有“ ServisKartDetay”类,并从“ ServisKartDetay”类中调用:
class ServisKartDetay extends StatefulWidget {
final IhaleData ihaleData;
ServisKartDetay(this.ihaleData);
@override
_ServisKartDetayState createState() => _ServisKartDetayState();
}
class _ServisKartDetayState extends State<ServisKartDetay> {
int _selectedIndex = 0;
final List<Widget> _selectedItem = <Widget>[
IlanBilgileri(
IhaleData(),
), //ERROR IS HERE
Container(
child: Center(
child: Text('Screen 2'),
),
)
];
void _onItemTapped(int index) {
setState(() {
_selectedIndex = index;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(body:Container(
Text(widget.ihaleData.status),
),
bottomNavigationBar: Theme(
data: ThemeData(
splashColor: Colors.transparent,
highlightColor: Colors.transparent),
child: BottomNavigationBar(
type: BottomNavigationBarType.fixed,
backgroundColor: Colors.white,
items: [
BottomNavigationBarItem(
icon: Icon(Icons.details),
title: Text('Details'),
),
BottomNavigationBarItem(
icon: Icon(Icons.info),
title: Text('Profile'),
),
],
currentIndex: _selectedIndex,
selectedItemColor: Colors.red,
onTap: _onItemTapped,
),
),
);
}
此代码有效,但是我的问题从这里开始,因为某种程度上我不理解它不起作用:
其他班级“ IlanBilgileri”:
class IlanBilgileri extends StatefulWidget {
final IhaleData kartDetay;
IlanBilgileri(this.kartDetay);
@override
_IlanBilgileriState createState() => _IlanBilgileriState();
}
class _IlanBilgileriState extends State<IlanBilgileri> {
@override
Widget build(BuildContext context) {
return Container(child:Text( widget.kartDetay.status == null
? widget.kartDetay.status.toString()
: 'Hello',
);
}
}
它没有给我错误或其他任何内容,它返回null ...而且我不明白这就是为什么...我正在从“ IlanBilgileri”到“ ServisKartDetay”作为底部导航栏的页面...但这给了我空...
我希望我能解释...
答案 0 :(得分:0)
IlanBilgileri(
IhaleData(),
), //ERROR IS HERE
您要为IhaleData
提供类IlanBilgileri
的新实例,该实例使用了带有所有可选参数的构造函数为null。也许您想传递具有真实值的参数widget.ihaleData
。
class _IlanBilgileriState extends State<IlanBilgileri> {
@override
Widget build(BuildContext context) {
return Container(child:Text( widget.kartDetay.status == null
? widget.kartDetay.status.toString()
: 'Hello',
);
}
在IlanBilgileri
之后,您使用三元运算符评估条件,如果为true,则返回第一个值,否则返回第二个
condition ? first_value : second_value
在这里,您要询问if(widget.kartDetay.status == null)
,然后以字符串形式返回状态,但是如果它为null,则该字符串为“ null”;如果它不是null,则返回'Hello'。可以想象,传递给IhaleData()的对象的所有参数都为null,因为它是您在那时创建的对象,并且从未初始化其值