【Flutter -- GetX】弹框 - Dialog、Snackbar、BottomSheet

在这里插入图片描述

前言

本文是基于官方最新稳定版本 get: ^4.5.1 来进行开发。

通过阅读本文,你将学会如下:

  • 会使用 Dialog
  • 会使用 Snackbar
  • 会使用 BottomSheet

GetX 集成

1. 在 pubspec.yaml 文件中添加 GetX 的依赖,如下:

dependencies:
  flutter:
    sdk: flutter
  get: ^4.5.1

2. 需要对 GetX 进行初始化,将默认的 MaterialApp 替换为 GetMaterialApp 即可,如下:

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);
  
  @override
  Widget build(BuildContext context) {
    return GetMaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: HomePage(),
    );
  }
}

Dialog

1. 简介

Dialog 底层其实是对 AlertDialog 进行了封装, 一般用于二次确认的弹出框,比如当点击某个按钮提交资料时,需要用户二次确认,以防止误操作。

2. 属性

在这里插入图片描述在这里插入图片描述

3. 使用

  • 效果图

在这里插入图片描述

  • 代码
import 'package:flutter/material.dart';
import 'package:get/get.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return GetMaterialApp(
      title: 'Flutter Demo',

        home: Scaffold(
            appBar: AppBar(
              title: Text('GetX 对话框基本使用'),
            ),
            body: Center(
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                crossAxisAlignment: CrossAxisAlignment.center,
                children: <Widget>[
                  ElevatedButton(
                    onPressed: (){
                      Get.defaultDialog(onConfirm: () => print("Ok"), middleText: "Dialog made in 3 lines of code");
                    },
                    child: Text("显示 Dialog"),
                  ),
                ],
              ),
            )
        )

    );

  }
}

Snackbar

1. 简介

如果想在应用程序中触发某些特定的事件后,需要弹出一则快捷消息,那么使用 Snackbar 则是最佳的选择,接下来我们看一下 GetX 如何来联调 Snackbar 来使用。

2. 属性

在这里插入图片描述在这里插入图片描述在这里插入图片描述

3. 使用

  • 效果图
    在这里插入图片描述

  • 代码

import 'package:flutter/material.dart';
import 'package:get/get.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return GetMaterialApp(
      title: 'Flutter Demo',

        home: Scaffold(
            appBar: AppBar(
              title: Text('GetX 对话框基本使用'),
            ),
            body: Center(
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                crossAxisAlignment: CrossAxisAlignment.center,
                children: <Widget>[
                  ElevatedButton(
                    onPressed: (){
                      Get.snackbar("Snackbar 标题", "欢迎使用Snackbar");
                    },
                    child: Text("显示 Snackbar"),
                  ),
                ],
              ),
            )
        )

    );

  }
}

BottomSheet

1. 简介

BottomSheet 是底部弹出的一个组件,常用于单选、验证码二次校验弹窗等,GetX 的 BottomSheet 底部弹出是自定义通过路由push 的方法实现底部弹窗的一个效果。

2. 属性

在这里插入图片描述

3. 使用

  • 效果图

在这里插入图片描述

  • 代码
import 'package:flutter/material.dart';
import 'package:get/get.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return GetMaterialApp(
      title: 'Flutter Demo',

        home: Scaffold(
            appBar: AppBar(
              title: Text('GetX 对话框基本使用'),
            ),
            body: Center(
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                crossAxisAlignment: CrossAxisAlignment.center,
                children: <Widget>[
                  ElevatedButton(
                    onPressed: (){
                      Get.bottomSheet(
                          Container(
                            child: Wrap(
                              children: <Widget>[
                                ListTile(leading: Icon(Icons.music_note), title: Text('Music'), onTap: () => {}),
                                ListTile(
                                  leading: Icon(Icons.videocam),
                                  title: Text('Video'),
                                  onTap: () => {},
                                ),
                              ],
                            ),
                          ),
                          backgroundColor: Colors.white);
                    },
                    child: Text("BottomSheets"),
                  ),
                ],
              ),
            )
        )

    );

  }
}
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 好的,以下是回复: 实验6-9要求使用函数输出指定范围内的Fibonacci数。Fibonacci数列是指从和1开始,后面每一项都是前面两项的和,即, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ……。要求输出的Fibonacci数必须在指定的范围内,例如,如果指定范围是10到30,那么输出的Fibonacci数必须在10到30之间。可以使用循环和递归两种方法实现。 ### 回答2: 实验6-9要求我们使用函数输出指定范围内的Fibonacci数列。斐波那契数列是一串数字,其中每个数字是前两个数字之和,起始数字是0和1。数列的前几个数字为0、1、1、2、3、5、8、13等等。为了达到题目要求,我们需要编写一个函数,用来输出指定范围内的斐波那契数列。 在函数的实现过程中,我们需要使用循环语句和条件语句来控制输出的范围。函数的基本流程如下: 1. 定义一个fibonacci()函数,其中包含两个参数,分别为起始数和结束数; 2. 在函数中定义两个变量,分别为前一个数和后一个数,起始值分别为0和1,用于计算斐波那契数; 3. 使用for循环遍历指定范围内的数字,计算其斐波那契数并打印输出; 4. 注意要在函数返回结果后使用print函数来输出结果。 完整代码如下: ``` def fibonacci(start, end): a = 0 b = 1 result = [] for i in range(end): if a >= start: result.append(a) a, b = b, a + b if a > end: break return result print(fibonacci(5, 100)) ``` 在上述代码中,我们首先定义了一个叫做fibonacci的函数,该函数包含两个参数,分别为起始数和结束数。在函数内部,我们定义了两个变量a和b,其初始值分别为0和1,用于控制计算斐波那契数列。接着,我们使用for循环遍历指定范围内的数字,如果该数字在指定的范围内,则将其加入到结果列表中。为了控制循环次数,我们使用if语句来判断是否已经超出指定范围,如果超出则跳出循环。 最后,在函数返回结果后,我们使用print函数来输出结果。在本例中,我们打印输出了指定范围内的斐波那契数列,可以根据需要修改起始数和结束数来输出不同的结果。 ### 回答3: 实验6-9使用函数输出指定范围内的Fibonacci数。 Fibonacci数列是一个古老而广为人知的数学问题。它是由意大利数学家斐波那契提出的,因此得名为Fibonacci数列。该数列起始于0和1,后续的每个数都是前面两个数之和。这样可以得到一个数列如下:0、1、1、2、3、5、8、13、21、34……。 这种数列具有许多有趣的性质和应用。例如,许多有机体的生长和繁殖遵循斐波那契数列。此外,它还涉及许多数学和计算机科学问题。 在本实验中,我们将编写一个函数来输出指定范围内的Fibonacci数。这个函数应该接受两个参数:开始数字和结束数字。它将输出开始数字和结束数字中所有的Fibonacci数。 为了编写这个函数,我们需要了解一些Fibonacci数的生成方法。最简单的方法是使用递归,即定义一个函数来计算Fibonacci数。该函数的基本定义如下: F(n) = F(n-1) + F(n-2) 这表示第n个Fibonacci数是前两个Fibonacci数之和(F(n-1)和F(n-2))。从1和2开始,前两个Fibonacci数是1和1。那么,我们可以使用一个循环来遍历开始数字和结束数字之间的所有数字,然后计算它们是否为Fibonacci数。 以下是一个示例函数的代码: def Fibonacci(start,end): f1, f2 = 0, 1 while f2 <= end: if f2 >= start: print(f2) f1, f2 = f2, f1 + f2 在这个函数中,我们定义了两个变量f1和f2,开始时的值分别为0和1。之后,我们使用while循环来计算Fibonacci数并输出它们。 在循环中,我们使用if语句来检查Fibonacci数字是否在指定范围内。如果是,我们就使用print语句输出它。接下来,我们将f1和f2中的值交换,将f1更新为前一个数,将f2更新为当前数的值加上前一个数的值,从而生成下一个Fibonacci数。 在主程序中,我们可以使用以下代码来调用Fibonacci函数: Fibonacci(1, 1000) 这将输出所有在1-1000范围内的Fibonacci数。 在本实验中,我们掌握了使用循环和递归构建Fibonacci数列的基本方法,了解了递归的工作原理。同时我们也学会了如何通过编写函数来解决实际问题。这些技能在编写各种计算机程序和解决大量计算问题时都非常有用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kevin-Dev

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值