如何在Dart中的其他类中访问在一个类中定义的小部件(不是方法)

时间:2019-10-11 09:00:42

标签: flutter dart widget

我陷入了一个问题,我需要访问在其他某个类中的一个类中定义的自定义小部件之一。

我尝试在主类中创建该类的对象(具有自定义窗口小部件)。

这是错误:

未为类“ BottomBarApp”定义方法“ _bottom”。\ n请尝试将名称更正为现有方法的名称,或定义一个名为“ _bottom”的方法。

具有_bottom()小部件的类,需要在主类中对其进行访问。

class BottomBarApp extends StatefulWidget {
  @override
  _BottomBarAppState createState() => _BottomBarAppState();
}

class _BottomBarAppState extends State<BottomBarApp> {

 //widget to be accessed
  Widget _bottom()=> BottomNavigationBar(
    //somecode  
);


  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: _back,
      appBar: AppBar(
        backgroundColor: _back,
        title: Center(child:Text(_data)),
      ),
        body: Container(
          child: Center(
            child:  Text(_data,style: TextStyle(color: Colors.blue, fontSize: 40),),
          )

        ),


      bottomNavigationBar: object._bottom(),
    );


  }
}

主班

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key}) : super(key: key);


  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

 BottomBarApp object = new BottomBarApp(); //here's the object


  @override
  Widget build(BuildContext context) {
    return Scaffold(


     bottomNavigationBar: _bottom(),  //trying to access!!!!
    );
  }
}

请帮助!

1 个答案:

答案 0 :(得分:0)

您不能使用方法来制作可重用的小部件。

如果您需要将该方法提取到一个类中,然后直接使用该类。

代替:

class MyWidgetState extends State<MyWidget> {
  Widget someWidget() {
    return Container();
  }

  Widget build(BuildContext context) {
    return Container(child: someWidget());
  }
}

这样做:

class SomeWidget extends StatelessWidget {
  Widget build(BuildContext context) {
    return Container();
  }
}

class MyWidgetState extends State<MyWidget> {
  Widget build(BuildContext context) {
    return Container(child: SomeWidget());
  }
}