颤振:类别中的列表继承

时间:2020-06-26 15:11:28

标签: flutter inheritance dart implementation

大家好,我是新手,正在开发新的应用程序...我有一个问题,我做不到...我想从另一个类中调用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”作为底部导航栏的页面...但这给了我空...

我希望我能解释...

1 个答案:

答案 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,因为它是您在那时创建的对象,并且从未初始化其值