笔者项目中使用Flutter的模块并不多。虽然笔者还没有机会在项目中正式使用Flutter,但是也在学习Flutter的一些基本用法。本文就是一篇Flutter的入门介绍,后续会写更多深入介绍的文章。Flutter可以通过一套代码库快速构建高质量、高性能的跨平台应用,支持iOS、Android、Web以及桌面平台。在本文中,我们将介绍如何入门Flutter,包括环境搭建、基本概念、常用组件以及示例代码。
一、环境搭建
首先,我们需要搭建Flutter的开发环境。以下是简要的步骤:
bin
目录添加到系统的PATH
环境变量中。flutter doctor
,确保所有组件都已正确安装。在开始编写Flutter应用之前,我们需要了解一些基本概念:
接下来,我们将创建一个简单的Flutter应用,展示一个文本和一个按钮。当点击按钮时,文本内容将发生改变。
flutter create my_app
命令创建一个新的Flutter项目。lib/main.dart
文件,删除现有的代码,并添加以下代码:import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('My First Flutter App')),
body: MyHomePage(),
),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
String _displayText = 'Hello, Flutter!';
void _onButtonPressed() {
setState(() {
_displayText = 'You have pressed the button!';
});
}
@override
Widget build(BuildContext context) {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(_displayText),
RaisedButton(
child: Text('Press me'),
onPressed: _onButtonPressed,
),
],
),
);
}
}
以下是一些在Flutter应用开发中常用的组件及其代码示例:
Container(
margin: const EdgeInsets.all(10.0),
color: Colors.amber[600],
width: 48.0,
height: 48.0,
child: Center(child: Text('Hello Flutter')),
)
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
Icon(Icons.star, color: Colors.red[500]),
Icon(Icons.star, color: Colors.red[500]),
Icon(Icons.star, color: Colors.red[500]),
],
)
Stack(
alignment: const Alignment(0.6, 0.6),
children: [
CircleAvatar(
backgroundImage: AssetImage('images/pic.jpg'),
radius: 100.0,
),
Container(
decoration: BoxDecoration(
color: Colors.black45,
),
child: Text(
'Hello Flutter',
style: TextStyle(
fontSize: 20.0,
fontWeight: FontWeight.bold,
color: Colors.white,
),
),
),
],
)
ListView(
children: <Widget>[
ListTile(
leading: Icon(Icons.map),
title: Text('Map'),
),
ListTile(
leading: Icon(Icons.photo),
title: Text('Album'),
),
ListTile(
leading: Icon(Icons.phone),
title: Text('Phone'),
),
],
)
Scaffold(
appBar: AppBar(
title: Text('Hello Flutter'),
),
body: Center(
child: Text('Hello Flutter'),
),
)
RaisedButton(
child: Text('Show a SnackBar'),
onPressed: () {
Scaffold.of(context).showSnackBar(
SnackBar(
content: Text('Hello Flutter'),
),
);
},
)
Text(
'Hello Flutter',
style: TextStyle(
fontSize: 24.0,
fontWeight: FontWeight.w900,
color: Colors.blue[700],
),
)
Image.network('https://example.com/images/pic.jpg')
TextField(
decoration: InputDecoration(
border: OutlineInputBorder(),
labelText: 'Enter text here',
),
)
RaisedButton(
child: Text('Show an alert'),
onPressed: () {
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text('Alert'),
content: Text('Hello Flutter'),
);
},
);
},
)
以上只是一些简单的代码示例,实际上,这些组件可以组合在一起创建更复杂的界面。在实际开发过程中,你会发现Flutter提供的丰富Widget库可以满足各种各样的UI需求。
Flutter是一个强大的跨平台UI框架,通过一套代码就可以构建出在多个平台上运行的高质量应用。以上只是Flutter的入门介绍,要想熟练掌握Flutter,还需要不断地学习和实践。希望这篇文章能对你学习Flutter有所帮助。
Flutter原理与实践(https://tech.meituan.com/2018/08/09/waimai-flutter-practice.html)