我陷入了一个问题,我需要访问在其他某个类中的一个类中定义的自定义小部件之一。
我尝试在主类中创建该类的对象(具有自定义窗口小部件)。
未为类“ BottomBarApp”定义方法“ _bottom”。\ n请尝试将名称更正为现有方法的名称,或定义一个名为“ _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!!!!
);
}
}
请帮助!
答案 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());
}
}