我正在编写我的第一个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()),
);
},
),
),
);
}
答案 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
);
}