面试题答案
一键面试-
创建StatefulWidget类:
- 继承
StatefulWidget
,重写createState
方法返回对应的State
类实例。
class MyStatefulWidget extends StatefulWidget { const MyStatefulWidget({super.key}); @override State<MyStatefulWidget> createState() => _MyStatefulWidgetState(); }
- 解释:
MyStatefulWidget
是自定义的StatefulWidget
,createState
方法用于创建与之关联的State
对象,super.key
用于在Flutter的Element树中标识和管理Widget。
- 继承
-
创建State类:
- 继承
State<MyStatefulWidget>
,这里MyStatefulWidget
是与之关联的StatefulWidget
类型。 - 定义状态变量,例如用于显示文本的变量。
- 实现
build
方法构建UI。
class _MyStatefulWidgetState extends State<MyStatefulWidget> { String displayText = '初始文本'; @override Widget build(BuildContext context) { return Column( children: [ Text(displayText), ElevatedButton( onPressed: () { setState(() { displayText = '按钮点击后文本'; }); }, child: const Text('点击我'), ) ], ); } }
- 解释:
displayText
是状态变量,用于存储显示的文本。build
方法返回一个包含Text
和ElevatedButton
的Column
。ElevatedButton
的onPressed
回调中使用setState
方法,setState
会通知Flutter框架状态发生了变化,从而触发build
方法重新构建UI,更新Text
显示的内容。
- 继承
-
使用自定义的StatefulWidget: 在其他地方,例如
main
函数的MaterialApp
中使用该自定义Widget。
void main() {
runApp(MaterialApp(
home: Scaffold(
appBar: AppBar(title: const Text('自定义StatefulWidget示例')),
body: const MyStatefulWidget(),
),
));
}
解释:将MyStatefulWidget
作为Scaffold
的body
,这样就可以在应用中显示该自定义的有状态Widget。