Flutter通用UI之EmptyPage

示例图:

在这里插入图片描述

在这里插入图片描述

功能详解

EmptyPage支持自定义图片,文案,按钮是否展示,按钮字体大小,字体色值,边框,背景色

代码

import 'package:flutter/material.dart';

class EmptyPage extends StatelessWidget {
  final String imageUrl; //占位图
  final String desc; //描述
  bool hideBtn; //是否隐藏重新加载按钮
  OnBtnClickListener listener;
  Color borderColor;
  Color textColor;
  double textSize;
  double borderRadius;
  String btnText;
  List<Color> list;

  EmptyPage(
      {@required this.imageUrl,
      this.desc,
      this.hideBtn,
      this.listener,
      this.textSize,
      this.textColor,
      this.borderColor,
      this.borderRadius,
      this.btnText,
      this.list});

  @override
  Widget build(BuildContext context) {
    return Container(
      color: Colors.white,
      child: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Container(width: 120, height: 120, child: Image.asset(imageUrl)),
            Padding(
              padding: const EdgeInsets.all(8.0),
              child: Text(
                desc ?? "",
                style: TextStyle(fontSize: 13, color: Color(0xffc6cdd3)),
              ),
            ),
            _buildRetryBtn()
          ],
        ),
      ),
    );
  }

  Widget _buildRetryBtn() {
    var _hideBtn = hideBtn ?? false;
    var _list = list ?? [Color(0xffFFE251), Color(0xffFDD108)];
    if (!_hideBtn) {
      return Container(
        height: 40,
        margin: EdgeInsets.fromLTRB(0, 20, 0, 0),
        padding: EdgeInsets.fromLTRB(20, 0, 20, 0),
        decoration: BoxDecoration(
            border: Border.all(color: borderColor ?? Colors.black),
            gradient: LinearGradient(colors: _list),
            borderRadius: BorderRadius.circular(borderRadius ?? 20)),
        child: FlatButton(
          onPressed: () {
            listener.onTap();
          },
          highlightColor: Color(0xffFFE251),
          child: Text(
            btnText ?? "重新加载",
            style: TextStyle(
                fontSize: textSize ?? 16,
                color: textColor ?? Color(0xff343a40)),
          ),
        ),
      );
    } else {
      return Container();
    }
  }
}

abstract class OnBtnClickListener {
  void onTap();
}

代码调用

EmptyPage(imageUrl: "images/nonet.png",desc: "网络飞走了",)

点击事件回调

 @override
  void onTap() {
    // TODO: implement onTap
  }

属性含义

属性含义
imageUrl图片地址
desc文案描述
hideBtn是否隐藏按钮
listener点击回调
borderColor按钮边框颜色
textColor字体颜色
textSize字体大小
borderRadius按钮弧度
btnText按钮文案
list按钮渐变背景色

Demo

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flutter的跨平台框架让我们可以通过使用相同的代码库开发多个平台的应用程序,包括移动端、Web和桌面应用程序。Flutter Desktop UI是指使用Flutter来构建桌面用户界面的能力。 使用Flutter构建桌面应用程序有几个关键优势。首先,它提供了丰富的UI组件和材料设计风格的样式。这使得开发者可以轻松地创建具有吸引力和一致性的用户界面。不论是在移动设备上还是在桌面上,用户可以享受到相似的应用程序体验。 其次,FlutterUI是响应式的,可以根据不同的屏幕大小和设备分辨率自动调整和适应。这使得开发者能够在不同平台上创建适配的用户界面,无需手动调整布局和设计。 另外,Flutter的桌面支持还提供了易于使用的平台接口,使开发者可以访问底层平台功能和API。无论是文件系统访问、网络请求还是系统通知,开发者都可以通过Flutter桌面UI来实现。 最后,使用Flutter构建桌面UI还可以实现代码的重用。开发者可以重用之前构建的移动应用程序中的业务逻辑和UI组件,从而节省开发时间和资源。这为跨平台开发提供了更大的便利和效率。 总的来说,Flutter的桌面UI为开发者提供了广泛且灵活的工具和能力,使他们能够轻松地构建适配不同平台的桌面应用程序,并实现代码的重用和高效开发。这使得开发者能够更快速地将应用程序扩展到不同的设备和操作系统,提供统一和一致的用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值