Dart 语言 ElevatedButton 凸起按钮示例

Dart阿木 发布于 2025-06-19 5 次阅读


Dart ElevatedButton 凸起按钮示例详解

在Flutter和Dart开发中,ElevatedButton是一个常用的UI组件,它提供了一个凸起按钮的外观和感觉,非常适合用于触发动作。本文将围绕ElevatedButton的使用进行深入探讨,包括其基本用法、样式定制、事件处理以及与其他组件的结合使用。

基本用法

ElevatedButton是一个简单的按钮,它具有一个凸起的效果,通常用于触发一个动作。以下是一个基本的ElevatedButton示例:

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('ElevatedButton 示例'),


),


body: Center(


child: ElevatedButton(


onPressed: () {


print('按钮被点击');


},


child: Text('点击我'),


),


),


),


);


}


}


在这个例子中,我们创建了一个简单的Flutter应用,其中包含一个ElevatedButton。当按钮被点击时,会在控制台输出“按钮被点击”。

样式定制

ElevatedButton提供了丰富的样式定制选项,包括颜色、边框、阴影等。以下是如何定制ElevatedButton样式的示例:

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('ElevatedButton 样式定制'),


),


body: Center(


child: ElevatedButton(


onPressed: () {


print('按钮被点击');


},


style: ButtonStyle(


backgroundColor: MaterialStateProperty.resolveWith<Color>(


(Set<MaterialState> states) {


if (states.contains(MaterialState.pressed)) {


return Theme.of(context).colorScheme.primary.withOpacity(0.5);


}


return Theme.of(context).colorScheme.primary; // Use the default color


},


),


shadowColor: MaterialStateProperty.all(Colors.grey),


elevation: MaterialStateProperty.all(4.0),


shape: MaterialStateProperty.all(RoundedRectangleBorder(borderRadius: BorderRadius.circular(12.0))),


),


child: Text('点击我'),


),


),


),


);


}


}


在这个例子中,我们通过`ButtonStyle`属性对ElevatedButton进行了样式定制,包括背景颜色、阴影和边框形状。

事件处理

ElevatedButton的事件处理通常是通过`onPressed`属性来实现的。除了基本的点击事件,ElevatedButton还可以处理其他事件,如长按、拖动等。以下是一个处理长按事件的示例:

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('ElevatedButton 事件处理'),


),


body: Center(


child: ElevatedButton(


onPressed: () {


print('按钮被点击');


},


onLongPress: () {


print('按钮被长按');


},


child: Text('点击我'),


),


),


),


);


}


}


在这个例子中,我们添加了`onLongPress`属性来处理长按事件。

与其他组件的结合使用

ElevatedButton可以与其他组件结合使用,以创建更复杂的UI。以下是一个将ElevatedButton与TextField结合使用的示例:

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('ElevatedButton 与其他组件结合'),


),


body: Center(


child: Column(


mainAxisAlignment: MainAxisAlignment.center,


children: <Widget>[


TextField(


decoration: InputDecoration(


labelText: '请输入内容',


),


),


ElevatedButton(


onPressed: () {


// 获取TextField中的内容


final text = TextEditingController().text;


print('输入的内容是:$text');


},


child: Text('提交'),


),


],


),


),


),


);


}


}


在这个例子中,我们创建了一个包含TextField和ElevatedButton的列布局。当用户在TextField中输入内容并点击ElevatedButton时,会打印出输入的内容。

总结

ElevatedButton是Flutter和Dart开发中常用的UI组件之一,它提供了丰富的样式定制和事件处理功能。通过本文的示例,我们可以了解到如何使用ElevatedButton,以及如何与其他组件结合使用。掌握ElevatedButton的使用,将有助于我们创建更加美观和功能丰富的Flutter应用。