Flutter 导航到具有参数的类
如何导航到其构造函数接受某些参数的页面(类)。我显然不想传递任何论点。我只希望执行该类,以便显示页面 我试图提供伪参数,以便我的代码能够编译。但这不可能是正确的 代码:Flutter 导航到具有参数的类,flutter,dart,Flutter,Dart,如何导航到其构造函数接受某些参数的页面(类)。我显然不想传递任何论点。我只希望执行该类,以便显示页面 我试图提供伪参数,以便我的代码能够编译。但这不可能是正确的 代码: class MyApp extends StatelessWidget { Widget build(ct) { return MaterialApp( theme: ThemeData( brightness: Brightness.light, accentColor:
class MyApp extends StatelessWidget {
Widget build(ct) {
return MaterialApp(
theme: ThemeData(
brightness: Brightness.light,
accentColor: Colors.red,
iconTheme: IconThemeData(color: Colors.pinkAccent),
),
title: kAPP_NAME,
home: Home(),
routes: {
Products.routeName: (context) => Products()
},
);
}
}
产品类别:
class Products extends StatelessWidget
{
static const routeName = '/products';
final List<String> products;
Products(this.products);
...
...
// widget building etc..
}
不会编译,自然->这是因为产品只接受一个参数
我该怎么办?简短回答 更改为:
产品(this.Products);//这称为*位置*参数
为此:
类MyApp扩展了无状态小部件{
小部件生成(ct){
返回资料PP(
主题:主题资料(
亮度:亮度,亮度,
accentColor:Colors.red,
iconTheme:IconThemeData(颜色:Colors.pinkAccent),
),
标题:“卡普普大学名称”,
home:home(),
路由:{
Products.routeName:(上下文)=>Products()
},
);
}
}
类产品扩展了无状态控件{
静态常量routeName='/products';
最终产品清单;
Products({this.Products=const[]});//这称为具有默认值的命名参数
}
如前所述:
尽管命名参数是一种可选参数,但您可以使用@required对其进行注释,以指示该参数是必需的,即用户必须为该参数提供一个值
长话短说
A.违约
默认情况下,位置参数是必需的。
class-Person(){
字符串名;
人员(此名称)
}
人(“约翰”)//好的
Person()//错误
默认情况下,命名参数是可选的。
class-Person(){
字符串名;
个人({this.name})
}
人(名字:“约翰”)//好的
人(“约翰”)//错误
Person()//好的
B.定制
自定义位置参数是可选的。
class-Person(){
字符串名;
智力年龄;
Person(this.name、[this.age])
}
人(“约翰”)//好的
人(“约翰”,40)//好的
需要自定义命名参数。
class-Person(){
字符串名;
智力年龄;
Person({this.name,@required this.age})
}
人(姓名:“约翰”,年龄:20)//好的
人员(姓名:“John”)//错误
Person()//错误
C.位置和命名组合
但在颤振中,我们必须清楚地了解位置的组合
和命名参数
下面的代码演示了Flatter的文本小部件的克隆,
class Text(){
字符串名;
弦乐家庭;
布尔博尔德;
Text(this.name,{this.fontfamine,this.bold})
}
Text(“颤振”)//确定
Text(“flatter”,fontFamily:“Roboto”)//好的
Text(“flatter”,粗体:true)//确定
Text(名称:“flatter”,粗体:true)//错误
Text(粗体:true)//错误
您可以将Products.class的参数设置为可选参数。
更改此项:
Product(this.products);
为此:
Product([this.product]);
现在,如果您实例化这个类而不为产品
传递对象,它将保持null
。
您还可以为以下产品提供默认值:
Product([this.products = []]);
现在,每次实例化这个类而不传递任何参数时,它都将是空列表,而不是null
希望这能有所帮助。在我给出答案之前,请允许我感谢Kalpesh和Ejabu的回答? 所以问题是我们有一个页面(一个类),它有一个带参数的构造函数。不管它是否是命名构造函数,这都不重要。问题是,每当实例化或引用这个类(在路由器{}部分中)时,路由都希望给出参数。这是愚蠢的,因为没有理由支持这条路线 那么答案是什么呢 答案是,请不要给我红色箭头,但答案是:
只需在类(或方法)中使用我们需要的参数创建一个函数。我们有时使用类参数来传递值。。这是一个选择。我们可以让类不带任何构造函数参数,只需创建一个函数来接受我们需要的参数 它称为可选位置参数。我在上面的长答案部分编辑了我的答案。如果这个答案有帮助,请接受@你好,非常感谢你的回答。但我不确定这是否解决了我的问题。您知道,我的代码的某些部分需要产品中的参数(参数),但有些部分不需要(例如,只调用类来显示我需要的信息)。我尝试了你的代码,现在调用产品的部分(带有参数)不起作用。
Product([this.products = []]);