目录
一、类构造函数
二、带命名参数构类造函数
三、系统构造函数
一、类构造函数
自定义一个Aclass类,定义一个字符串属性String titles。
Aclass的构造函数为:
Aclass(String titles){
this.titles = titles;
}
也可以简写:
Aclass({this.titles});
demo代码如下:
class Aclass extends StatefulWidget {
String titles;
// Aclass(String titles){
// this.titles = titles;
// }
Aclass(this.titles); // 简写形式
@override
AclassState createState() => _AclassState();
}
二、带命名参数构类造函数
1、定义函数时,用{ }括起来的参数,就是命名参数。可以给默认值,也可以不给。
如一、中构造函数简写,{this.titles} 就是命名参数。
2、命名参数默认值
可以赋默认值
Aclass({this.titles = '我是默认值'});
类实例化时使用代码:
Aclass(titles: '搜索页面1'),
也可以不赋值,但是要用required关键字修饰this.titles,
Aclass({required this.titles}); //意思是实例化对象时该参数必传
类实例化时使用代码:
Aclass(titles: '搜索页面1',)
不赋值另一种方法,要定义可选类型的titles属性,即: 类型?属性名
String? titles。
类实例化时参数可传也可不传:
Aclass(titles: '搜索页面1',) 或 Aclass()
注意:Aclass类中,使用titles要做是否为空的判定。
Demo代码示例如下:
class Aclass extends StatefulWidget {
//String titles;
String? titles;
// Aclass({this.titles = '我是默认值'}); //给默认值
Aclass({this.titles}); //不给默认值
//Aclass({required this.titles}); //不给默认值
@override
AclassState createState() => _AclassState();
}
class _AclassState extends State<Aclass> {
@override
Widget build(BuildContext context) {
return Scaffold(
floatingActionButton: TextButton(
onPressed: () {
Navigator.pop(context, 'jieshu');
},
child: Text('返回上一页'),
),
appBar: AppBar(
title: Text(
this.widget.titles ?? "我是默认值",
style: TextStyle(color: Colors.amber),
),
),
body: Text('这是搜索页面内容')
);
}
}
三、系统构造函数
第一种方式:
Aclass({Key? key, this.titles = '我是默认值'}) : super(key: key);
super(key: key) 是默认调用函数,Aclass实例不成功时调用它。
类实例化时使用代码: Aclass(titles: '搜索页面1',)
titles属性,可以是可选类型(类型?属性名),也可以是非可选类型(类型 属性名)
String? titles 或者 String titles
第二种方式:
Aclass({Key? key, String? titles}) : super(key: key); //不给默认值
不赋值时,titles属性,必须是可选类型(类型?属性名)
String? titles。
第三种方式:
Aclass({Key? key, required this.titles}) : super(key: key); //不给默认值
不赋值时,titles属性,可以是可选类型(类型?属性名),也可以是非可选类型(类型 属性名)
String? titles 或者 String titles
代码如下:
Demo代码示例如下:
class Aclass extends StatefulWidget {
//String titles;
String? titles;
//Aclass({Key? key, this.titles = '我是默认值'}) : super(key: key); //给默认值
Aclass({Key? key, String? titles}) : super(key: key); //不给默认值
Aclass({Key? key, required this.titles}) : super(key: key); //不给默认值
@override
AclassState createState() => _AclassState();
}
class _AclassState extends State<Aclass> {
@override
Widget build(BuildContext context) {
return Scaffold(
floatingActionButton: TextButton(
onPressed: () {
Navigator.pop(context, 'jieshu');
},
child: Text('返回上一页'),
),
appBar: AppBar(
title: Text(
this.widget.titles ?? "我是默认值",
style: TextStyle(color: Colors.amber),
),
),
body: Text('这是搜索页面内容')
);
}