Flutter是谷歌发布的一套移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。能够做到一套代码两个终端运行。并且Flutter是完全免费、开源的
Flutter入门教程(下)
在上一篇文章中,我们介绍了Flutter的基本概念和环境配置。在本篇文章中,我们将进一步介绍Flutter的核心组件和基本用法。
Widget
在Flutter中,一切都是Widget。Widget是Flutter的核心概念,它是构建Flutter应用程序的基本单位。Widget是可以被绘制的元素,例如按钮、文本、图像等等。Flutter中有两种Widget,一种是有状态的Stateful Widget,另一种是无状态的Stateless Widget。
Stateless Widget
Stateless Widget是一种不可变的Widget,它不会被动态地改变。它的生命周期只有一次,当Widget第一次被创建时,就会生成一个Element,并被绘制到屏幕上。下面是一个简单的Stateless Widget的例子:
```
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
child: Text('Hello, World!'),
);
}
}
```
上面的代码创建了一个Stateless Widget,并返回一个Container Widget,Container Widget内部包含一个Text Widget。Text Widget用于显示文本内容。当MyWidget被创建时,它会返回一个Container Widget,Container Widget会将Text Widget绘制到屏幕上。
Stateful Widget
Stateful Widget是一种可变的Widget,它的状态可以随着时间的推移而改变。当状态改变时,Flutter会重新绘制Widget。Stateful Widget有一个State对象,这个对象可以在Widget生命周期内改变Widget的状态。下面是一个简单的Stateful Widget的例子:
```
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Stateful Widget Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('You have pushed the button this many times:'),
Text(
'$_counter',
style: Theme.of(context).textTheme.headline4,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: Icon(Icons.add),
),
);
}
}
```
上面的代码创建了一个Stateful Widget,并返回一个Scaffold Widget,Scaffold Widget内部包含一个AppBar Widget、一个Center Widget和一个FloatingActionButton Widget。当MyWidget被创建时,它会返回一个Scaffold Widget,Scaffold Widget会将AppBar Widget、Center Widget和FloatingActionButton Widget绘制到屏幕上。当用户点击FloatingActionButton时,_incrementCounter方法会被调用,它会改变MyWidget的状态,然后调用setState方法,告诉Flutter重新绘制Widget。
布局
在Flutter中,布局是通过Widget来实现的。Flutter提供了一系列布局Widget,
版权声明:xxxxxxxxx;
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态