📅  最后修改于: 2021-01-02 05:03:56             🧑  作者: Mango
图标是代表应用程序或任何包含用户含义的特定实体的图形图像。它可以是可选的,也可以是非可选的。例如,公司的徽标是不可选择的。有时它还包含一个超链接,可以转到另一个页面。它也可以代替实际实体的详细说明。
Flutter提供了一个图标小部件来在我们的应用程序中创建图标。我们可以使用内置图标或自定义图标在Flutter中创建图标。 Flutter提供了Icons类中所有图标的列表。在本文中,我们将学习如何在应用程序中使用Flutter图标。
Flutter icons小部件具有用于自定义图标的不同属性。这些属性说明如下:
Property | Descriptions |
---|---|
icon | It is used to specify the icon name to display in the application. Generally, Flutter uses material design icons that are symbols for common actions and items. |
color | It is used to specify the color of the icon. |
size | It is used to specify the size of the icon in pixels. Usually, icons have equal height and width. |
textDirection | It is used to specify to which direction the icon will be rendered. |
让我们使用不同的示例了解Flutter图标。
范例1:
在此示例中,我们将看到具有默认值的基本图标小部件。首先,在IDE中创建一个项目,导航到lib文件夹,然后打开main.dart文件。现在,将以下代码替换为main.dart文件:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyIconPage(),
);
}
}
class MyIconPage extends StatefulWidget {
@override
_MyIconPageState createState() => _MyIconPageState();
}
class _MyIconPageState extends State {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Icon Tutorial'),
),
body: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Icon(Icons.camera_enhance),
Icon(Icons.camera_front),
Icon(Icons.camera_rear),
]),
);
}
}
输出:
当我们运行该项目时,它将在我们正在使用的仿真器或设备中显示类似于以下屏幕截图的UI:
范例2:
在此示例中,我们将看到如何自定义图标。在这里,我们将使用size属性根据需要调整图标大小。我们还将看到color属性来更改图标的默认颜色。因此,打开main.dart文件,并将其替换为以下代码:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyIconPage(),
);
}
}
class MyIconPage extends StatefulWidget {
@override
_MyIconPageState createState() => _MyIconPageState();
}
class _MyIconPageState extends State {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Icon Tutorial'),
),
body: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Icon(
Icons.camera_enhance,
size: 70,
color:Colors.green
),
Icon(
Icons.camera_front,
size: 70,
color:Colors.orange
),
Icon(
Icons.camera_rear,
size: 70,
color:Colors.black
),
]),
);
}
}
输出:
当我们运行该项目时,它将在我们正在使用的仿真器或设备中显示类似于以下屏幕截图的UI:
范例3:
大多数时候,我们已经看到图标在我们的应用程序中始终在其下方包含一个文本。在此示例中,我们将看到如何将文本窗口小部件与图标窗口小部件一起使用。因此,打开main.dart文件,并将其替换为以下代码:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyIconPage(),
);
}
}
class MyIconPage extends StatefulWidget {
@override
_MyIconPageState createState() => _MyIconPageState();
}
class _MyIconPageState extends State {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Icon Tutorial'),
),
body: Column(children: [
//icon with label below it
Container(
padding: EdgeInsets.all(30),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Column(children: [
Icon(
Icons.camera_front,
size: 70
),
Text('Front Camera'),
]),
Column(children: [
Icon(
Icons.camera_enhance,
size: 70
),
Text('Camera'),
]),
Column(children: [
Icon(
Icons.camera_rear,
size: 70
),
Text('Rear Camera'),
]),
]
),
)
],
)
);
}
}
输出:
当我们运行该项目时,它将在我们正在使用的仿真器或设备中显示类似于以下屏幕截图的UI: