"CounterApp"的Flutter基础案例,带有详细的注释
这个示例是一个非常简单的Flutter应用程序,旨在演示如何使用Flutter构建一个具有基本交互性的用户界面。让我详细解释一下这个示例的重要部分:
创建Flutter应用程序结构:我们首先创建了一个名为CounterApp的Flutter应用程序,并在其main()函数中调用runApp()来启动应用程序。CounterApp是一个继承自StatelessWidget的类,它表示整个应用程序的根。
应用程序主题和标题:在CounterApp的build()方法中,我们使用MaterialApp小部件创建应用程序的主题和标题。在这里,我们指定了应用程序的标题为"Counter App",并选择了一个蓝色的主题。
创建带有状态的小部件:我们创建了一个名为CounterHomePage的StatefulWidget,以便我们可以在其中管理应用程序的状态。这个小部件代表了应用程序的主页。
计数器变量和操作函数:在CounterHomePage的状态类_CounterHomePageState中,我们声明了一个整数变量_counter,它用于存储计数器的当前值。我们还定义了两个函数_incrementCounter()和_decrementCounter(),分别用于增加和减少计数器的值。这些函数通过调用setState()来更新_counter变量的值,以便触发UI的重新构建。
构建用户界面:在CounterHomePage的build()方法中,我们定义了应用程序的用户界面。我们使用Scaffold小部件来创建一个基本的页面结构,包括应用程序栏和页面主体。在主体部分,我们使用Center和Column小部件来居中和垂直排列子部件。我们显示了一个文本消息,说明用户可以通过点击按钮来增加或减少计数器的值,并显示了当前的计数器值。两个按钮则放置在页面底部,通过floatingActionButton属性添加,一个用于增加计数器值,另一个用于减少计数器值。
响应用户交互:两个浮动操作按钮通过onPressed属性分别与_incrementCounter()和_decrementCounter()函数关联,这意味着当用户点击按钮时,相应的函数将被调用,从而更新计数器的值并重新构建UI。
总之,这个示例演示了如何使用Flutter构建一个简单的交互式应用程序,并展示了如何管理状态以及如何响应用户的操作来更新应用程序的用户界面。
import ‘package:flutter/material.dart’;
void main() {
runApp(CounterApp());
}
class CounterApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: ‘Counter App’, // 应用程序标题
theme: ThemeData(
primarySwatch: Colors.blue, // 主题颜色
),
home: CounterHomePage(), // 应用程序主页
);
}
}
class CounterHomePage extends StatefulWidget {
@override
_CounterHomePageState createState() => _CounterHomePageState();
}
class _CounterHomePageState extends State {
int _counter = 0; // 计数器变量
// 增加计数器值的函数
void _incrementCounter() {
setState(() {
_counter++;
});
}
// 减少计数器值的函数
void _decrementCounter() {
setState(() {
_counter–;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(‘Counter App’), // 页面标题
),
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: Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
// 减少计数器值的浮动操作按钮
FloatingActionButton(
onPressed: _decrementCounter, // 按钮点击事件
tooltip: ‘Decrement’, // 长按时的提示文本
child: Icon(Icons.remove), // 按钮图标
),
SizedBox(width: 10), // 按钮间隔
// 增加计数器值的浮动操作按钮
FloatingActionButton(
onPressed: _incrementCounter, // 按钮点击事件
tooltip: ‘Increment’, // 长按时的提示文本
child: Icon(Icons.add), // 按钮图标
),
],
),
);
}
}