📜  FAB – Flutter的快速拨号

📅  最后修改于: 2021-09-02 05:11:48             🧑  作者: Mango

Floating action button ,通常缩写为FAB ,是一个主要的动作按钮,它在应用程序中具有一个固定的位置悬停,不会改变屏幕的内容。快速拨号是 FAB 的一种过渡类型,它在同一屏幕中发出多个实体作为 FAB 的一个动作。

浮动操作按钮:

FAB 分为三个部分。它们是容器图标文本。基于这些部分,FAB分为两种类型。

1.常规:只有一个图标的容器(默认)

2.扩展:

一世。只有文本的容器

ii.带有图标和文本的容器

FAB 容器有两种默认尺寸。它们是默认(56 x 56 dp) 和迷你(40 x 40 dp)。 FAB 容器的形状或宽度有两种类型。

1.固定:容器内容的累积宽度,包括填充

2. Fluid:应用程序屏幕或布局网格的相对宽度

默认情况下,基本容器为圆形,图标位于中心。

FAB 的可见性、动作甚至动画都是高度可定制的,使其非常相关且易于在屏幕中访问。如上所述,FAB 是固定的,但它们悬停在内容上,使其完全脱离屏幕内容的上下文。因此,强烈建议将相关 FAB 用于特定屏幕。

单击 FAB 时执行的操作要么发生在同一屏幕上,要么发生在不同的屏幕上。 FAB 转换可以采用以下形式:

1.快速拨号(带有图标和标签的 FAB)

2.菜单

3.子表面(同屏新表面)

4.新画面

Flutter的快速拨号

快速拨号是 FAB 的一种过渡类型,在同一屏幕中,单击 FAB 时会发出一系列动作。这些操作采用带有图标和标签的 FAB 形式。使用名为“ flutter_speed_dial ”的插件/依赖项可以实现快速拨号。

将插件添加到Flutter应用程序的步骤如下:

步骤 1:从项目文件夹中打开“pubspec.yaml”文件。

第 2 步:在 pubspec.yaml 文件中,在依赖下键入flutter_speed_dial:。

代码如下所示:

Dart
dependencies:
  flutter:
    sdk: flutter
  flutter_speed_dial:


Dart
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter_speed_dial/flutter_speed_dial.dart';
  
void main() => runApp(MyApp());
  
class MyApp extends StatelessWidget {
  SpeedDial buildSpeedDial() {
    return SpeedDial(
      animatedIcon: AnimatedIcons.menu_close,
      animatedIconTheme: IconThemeData(size: 28.0),
      backgroundColor: Colors.green[900],
      visible: true,
      curve: Curves.bounceInOut,
      children: [
        SpeedDialChild(
          child: Icon(Icons.chrome_reader_mode, color: Colors.white),
          backgroundColor: Colors.green,
          onTap: () => print('Pressed Read Later'),
          label: 'Read',
          labelStyle:
              TextStyle(fontWeight: FontWeight.w500, color: Colors.white),
          labelBackgroundColor: Colors.black,
        ),
        SpeedDialChild(
          child: Icon(Icons.create, color: Colors.white),
          backgroundColor: Colors.green,
          onTap: () => print('Pressed Write'),
          label: 'Write',
          labelStyle:
              TextStyle(fontWeight: FontWeight.w500, color: Colors.white),
          labelBackgroundColor: Colors.black,
        ),
        SpeedDialChild(
          child: Icon(Icons.laptop_chromebook, color: Colors.white),
          backgroundColor: Colors.green,
          onTap: () => print('Pressed Code'),
          label: 'Code',
          labelStyle:
              TextStyle(fontWeight: FontWeight.w500, color: Colors.white),
          labelBackgroundColor: Colors.black,
        ),
      ],
    );
  }
  
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Geeks for Geeks'),
          backgroundColor: Colors.green,
        ),
        body: SafeArea(
          child: Center(
            child: Text(
              'Welcome to GFG!',
              style: TextStyle(
                fontSize: 30.0,
                color: Colors.green,
                fontWeight: FontWeight.bold,
              ),
            ),
          ),
        ),
        floatingActionButton: buildSpeedDial(),
      ),
    );
  }
}


第 3 步:现在单击应用程序(Android Studio)顶部的“ Pub Get ”按钮。

第四步:控制台中的“进程完成,退出代码为0 ”显示依赖添加成功。

第 5 步: 现在通过添加import ‘package:flutter_speed_dial/flutter_speed_dial.xml 来导入插件或包。dart’;代码到主要的顶部。dart文件。

源代码:

Dart

import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter_speed_dial/flutter_speed_dial.dart';
  
void main() => runApp(MyApp());
  
class MyApp extends StatelessWidget {
  SpeedDial buildSpeedDial() {
    return SpeedDial(
      animatedIcon: AnimatedIcons.menu_close,
      animatedIconTheme: IconThemeData(size: 28.0),
      backgroundColor: Colors.green[900],
      visible: true,
      curve: Curves.bounceInOut,
      children: [
        SpeedDialChild(
          child: Icon(Icons.chrome_reader_mode, color: Colors.white),
          backgroundColor: Colors.green,
          onTap: () => print('Pressed Read Later'),
          label: 'Read',
          labelStyle:
              TextStyle(fontWeight: FontWeight.w500, color: Colors.white),
          labelBackgroundColor: Colors.black,
        ),
        SpeedDialChild(
          child: Icon(Icons.create, color: Colors.white),
          backgroundColor: Colors.green,
          onTap: () => print('Pressed Write'),
          label: 'Write',
          labelStyle:
              TextStyle(fontWeight: FontWeight.w500, color: Colors.white),
          labelBackgroundColor: Colors.black,
        ),
        SpeedDialChild(
          child: Icon(Icons.laptop_chromebook, color: Colors.white),
          backgroundColor: Colors.green,
          onTap: () => print('Pressed Code'),
          label: 'Code',
          labelStyle:
              TextStyle(fontWeight: FontWeight.w500, color: Colors.white),
          labelBackgroundColor: Colors.black,
        ),
      ],
    );
  }
  
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Geeks for Geeks'),
          backgroundColor: Colors.green,
        ),
        body: SafeArea(
          child: Center(
            child: Text(
              'Welcome to GFG!',
              style: TextStyle(
                fontSize: 30.0,
                color: Colors.green,
                fontWeight: FontWeight.bold,
              ),
            ),
          ),
        ),
        floatingActionButton: buildSpeedDial(),
      ),
    );
  }
}

代码说明:

1. 创建了一个带有应用栏、文本和 FAB 的基本屏幕。

2. 此 FAB 分配有名为buildSpeedDial的操作。

3. buildSpeedDial函数具有主FAB称为快速拨号和连接到它的多个其他SpeedDialChild的Fab。

4. SpeedDial 只不过是屏幕上的主要 FAB,单击时会展开以发出多个 SpeedDialChild。

5. SpeedDial 可以使用许多特性进行自定义,例如animationIconanimatedIconTheme 、visible(FAB 在屏幕上的可见性)、曲线(FAB 在被点击时的行为方式)等等。

6. SpeedDialChild也是一个完全可定制的,具有backgroundColor , onTap , label, labelStyle , Child(Icon), labelBackgroundColor等功能。

注意: onTap: () => print(“Pressed”),命令将在flutter控制台中执行。

输出:

颤动中的速度每日

想要一个更快节奏和更具竞争力的环境来学习 Android 的基础知识吗?
单击此处前往由我们的专家精心策划的指南,旨在让您立即做好行业准备!