在小部件中使用凸起按钮时发生错误

时间:2020-02-19 17:22:08

标签: flutter dart

我正在编写我的第一个Flutter应用程序,并且创建了两个类。 这两个类代表两个页面,我希望在它们之间进行导航,而且我遇到了“ raisedButton”问题。 第一类有2个小部件,并且按钮仅在其中一个中起作用!每当我尝试将按钮剪切+粘贴到所需的小部件=>时,都会出现以下错误:

方法'findAncestorStateOfType'在null上被调用。 接收者:null 尝试调用:findAncestorStateOfType()

我不知道那是什么意思。 任何帮助表示赞赏。

class FirstRoute extends StatelessWidget {
  Widget _contactList(String name, String image,[BuildContext context]) {
    return Padding(
      padding: const EdgeInsets.all(8.0),
      child: ListTile(
        leading: CircleAvatar(
          backgroundColor: Colors.red,
          backgroundImage: AssetImage(image),
          radius: 35.0,
          child: Text(nameInitial,
              style: TextStyle(fontWeight: FontWeight.bold, fontSize: 20.0)),
        ),
        title: Text(name),
        trailing: RaisedButton(
          textColor: Colors.white,
          color: Colors.blue,
          child: Text('Details'),
          onPressed: () {
            Navigator.push(
              context,
              MaterialPageRoute(builder: (context) => Details()),
            );
          },
        ),
      ),
    );
  }

1 个答案:

答案 0 :(得分:0)

您可以通过调用Navigator.pushNamed(context,'/ home');使用命名路由。命名路由允许参数传递'/customer/:${customer.id}'。路由路径是在分配给路由信息的GenerateRoute属性上定义的

class _AppWidgetState extends State<AppWidget>{
bool _bright=false;
_brightnessCallback(). 
{setState(()=>_bright=!_bright);debugPrint("brightnessCallback fired");}

@override
Widget build(BuildContext context){
return MaterialApp(
title: "Flutter demo",
theme: ThemeData(
  primarySwatch: Colors.blue,
),
home: MyHome2Widget(),
onGenerateRoute: handleRoute

);
}}

Route<dynamic> handleRoute(RouteSettings routeSettings)
{
List<String> nameParam= routeSettings.name.split(":");
String name=nameParam[0];
//int id=int.tryParse(nameParam[1]);
Widget childWidget;
if(name=="/Home")
{
  childWidget=MyHome2Widget();
}else if(name=="/Summary")
{
  childWidget=SummaryWidget();
}
return MaterialPageRoute(
   builder:(context)=>childWidget
);
}