Flutter 自定义对话框的示例

一、前言

虽然官方已经提供了一些简单的对话框,但是在实际业务中往往需要我们自己定义一些对话框,本文示例代码主要作用是为了在实际开发中快速参考修改的作用,代码如下:

二、代码

本段代码是一个对话框工具类,具体的对话框内容可以由外部传入。

import 'package:flutter/material.dart';

//广告对话框的工具类
class DialogAdCompat{
  static final _dialogAdCompat = DialogAdCompat._internal();
  factory DialogAdCompat() {
    return _dialogAdCompat;
  }

  DialogAdCompat._internal();

  //弹出广告对话框
  showAdDialog(BuildContext context,
               Widget child,//对话框中显示的控件
               {Color backgroundColor = Colors.white//对话框背景色
               }){

    return showDialog<void>(
      context: context,
      barrierDismissible: true,
      // false = user must tap button, true = tap outside dialog

      builder: (BuildContext dialogContext) {
        final dialogChild = Container(
                padding: const EdgeInsets.all(10),
                child: Center(child: child),
                decoration: BoxDecoration(
                  color: backgroundColor,
                  borderRadius: new BorderRadius.circular(5.0),
                ),
           );
        return Dialog(child: dialogChild,backgroundColor: Colors.transparent,);
      },
    );
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flutter是一种跨平台的移动应用程序开发框架,它可以让开发者使用Dart语言编写高性能、高保真的应用程序。而cool_ui则是一个开源的Flutter组件库,它提供了一系列的高质量UI组件,包括自定义键盘等。 在cool_ui中,自定义键盘组件提供了一种自定义输入框的方式。你可以使用它来创建一个具有不同样式和功能的键盘,以满足你的需求。在使用自定义键盘之前,你需要在你的项目中引入cool_ui库,并在需要使用自定义键盘的页面中导入相关组件。 在cool_ui中,自定义键盘组件分为两种类型:数字键盘和普通键盘。数字键盘通常用于输入数字,而普通键盘则用于输入文本。你可以根据你的需求选择相应的键盘类型,并根据实际情况进行自定义。 以下是一个简单的示例代码,展示了如何使用cool_ui中的自定义键盘组件: ``` import 'package:flutter/material.dart'; import 'package:cool_ui/cool_ui.dart'; class MyKeyboardDemo extends StatefulWidget { @override _MyKeyboardDemoState createState() => _MyKeyboardDemoState(); } class _MyKeyboardDemoState extends State<MyKeyboardDemo> { TextEditingController _controller = TextEditingController(); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Custom Keyboard Demo'), ), body: Container( padding: EdgeInsets.all(20), child: Column( children: <Widget>[ TextField( controller: _controller, decoration: InputDecoration( labelText: 'Input Text', border: OutlineInputBorder(), ), keyboardType: TextInputType.number, onTap: () { FocusScope.of(context).requestFocus(FocusNode()); showModalBottomSheet( context: context, builder: (BuildContext context) { return CustomKeyboard( type: KeyboardType.number, onTextInput: (text) { setState(() { _controller.text = _controller.text + text; }); }, onBackspace: () { setState(() { _controller.text = _controller.text .substring(0, _controller.text.length - 1); }); }, ); }, ); }, ), ], ), ), ); } } ``` 该示例代码中,我们首先创建了一个TextField用于接收用户输入,并设置了其keyboardType为number。然后,在用户点击该TextField时,我们调用showModalBottomSheet方法来弹出一个CustomKeyboard组件。 在CustomKeyboard组件中,我们设置了其type为KeyboardType.number,表示这是一个数字键盘。然后,我们通过onTextInput和onBackspace回调来处理用户输入和删除操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值