搜索插件、代码仓与 APP 分类

quds_ui_kit 封面
插件详情v0.0.7+10

quds_ui_kit

Flutter UI 套件 [(动画图标、按钮、文字、计数器、数字时钟) - 页面转换 - 消息提示 - 对话框 - 分页 - 启动屏幕 ... 等]

AndroidiOSWebmacOSWindowsLinux
近 30 天下载
21
喜欢数
98
Pub 分数
150

安装插件

flutter pub add quds_ui_kit

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

quds_ui_kit 是一个 Flutter 小部件库,提供了一系列预构建且可自定义的 UI 组件,旨在加速应用开发。它包含动画图标、按钮、文本元素、计数器、数字时钟、页面过渡效果、提示信息、对话框、分页功能以及启动画面。该工具包采用简洁、可复用的代码编写,支持 Android、iOS、Web、macOS、Windows 和 Linux 多个平台。它有助于保持界面的一致性和视觉吸引力,同时减少样板代码。非常适合希望快速进行 UI 原型设计并打造精美动画界面的开发者。

适合场景

  • 快速UI原型设计
  • 创建动画界面
  • 构建跨平台应用
  • 添加平滑的页面过渡效果
  • 实现吐司通知
  • 设计启动画面

主要特点

  • 预构建的动画小部件
  • 跨平台兼容性
  • 可重用的 UI 组件
  • 平滑的页面过渡
  • 可自定义的动画
  • 内置对话框和提示

适合对象

  • 初学者到中级的 Flutter 开发者
  • 需要快速实现用户界面的项目
  • 需要一致视觉设计的应用程序
  • 专注于动画和交互性的开发人员
  • 致力于减少UI开发时间的团队

使用建议

  • 可能需要针对非常独特的设计进行定制
  • 除了基本用法外,文档有限
  • 依赖外部依赖项以实现完整功能
  • 最适合具有标准UI模式的项目
  • 未经修改,不适合复杂的自定义布局

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

Quds UI Kit

This library consists of:

  • Animating widgets with simple controlling, events capturing.
  • Page Transitions
  • Toasts
  • Bottom sheets
  • Dialogs
  • Pagination
  • Simple Drawer
  • Splash Screen View
  • Another Viewers

To use this package see the following example.

Animation:

Icons:
  • QudsAnimatedIcon
    A wrap widget to control Flutter AnimatedIcon easily.
 QudsAnimatedIcon(
            iconData: AnimatedIcons.play_pause,
            showStartIcon: _isPlaying,
          )


What if desired to combine another two icons?

  • QudsAnimatedCombinedIcons
    Combines any two icons and make a transition!
 QudsAnimatedCombinedIcons(
        startIcon: Icons.accessible,
        endIcon: Icons.accessibility_new,
        showStartIcon: _onChair,
      ),



You can customize the sizes, colors, transition duration and curve, ..etc.


  • QudsAnimatedText
QudsAnimatedText(
          _isPlaying ? 'Playing' : 'Paused',
        )


  • QudsAnimatedCounter
QudsAnimatedCounter(
        counter,
        duration: Duration(milliseconds: 200),
        length: 4,
        style: TextStyle(fontSize: 30),
      )




Buttons

All animated icons in this library wrapped in buttons with capturing tap ability.

QudsAnimatedCombinedIconsButton(
            tooltip: 'Toggle',
            startIcon: Icons.arrow_forward,
            // startIconColor: Colors.white,
            onPressed: _toggle,
          ),

Other Buttons:

  • QudsAnimatedIconButton
  • QudsAnimatedCombinedIconsButton
  • QudsCheckbox
  • QudsCheckboxListTile
  • QudsCheckboxWithText



Page Transitions

Wide collection of page route tranistion are now supported in Quds UI Kit

  • Fade QudsFadePageRoute({duration, curve})
  • Rotation QudsRotatePageRoute({duration, curve, alignment})
  • Slide QudsSlidePageRoute({direction[Up Down Left Right Start End], duration, curve})
  • Zoom QudsZoomPageRoute({duration, curve, alignment})
  • Combined QudsTransitionPageRoute({withFade, withRotate, withSlide, withScale, rotateAlignment, scaleAlignment, duration, curve})
Navigator.push(
                context,
                QudsSlidePageRoute(
                  builder: (c) => _SecondScreen(),
                  slideDirection: SlideDirection.Up, //Default [SlideDirection.Start]
                ))

Toasts

Customized toasts with easy control,

showQudsToast(context,
                  content: Text('Copied!'),
                  toastTime: QudsToastTime.VeryShort,
                  leadingActions: [
                    QudsAutoAnimatedCombinedIcons(
                      startIcon: Icons.copy,
                      endIcon: Icons.paste,
                      showStartIcon: false,
                    )
                  ])

Bottom Sheets

showQudsModalBottomSheet(
              context,
              (c) => Column(
                    children: [
                      for (int i = 0; i < 5; i++) ListTile(title: Text('Hi'))
                    ],
                  ),
              titleText: 'Test Bottom Sheet')




Pagination

QudsCollectionPagination<_ExampleModel>(
        resultsPerPage: itemsPerPage,
        itemsPadding: EdgeInsets.all(2),
        onResultsPerPageChanged: (p) {
          page = 1;
          itemsPerPage = p;
          _fillItems();
        },
        currentPageItems: currItems,
        onPageChanged: (p) {
          page = p;
          _fillItems();
        },
        selectedPage: page,
        total: provider.list.length,
        itemBuilder: (c, i, o) => ListTile(
          title: Text(o.name),
          subtitle: Text(o.id.toString()),
        ),
      )



Dialogs

  • General Dialogs
    In general, to show a dialog, user showQudsDialog, for example:
    showQudsDialog(context,
            title: Text('Save'),
            builder: (c) => Text(
                    'Would you like to save the document before existing?'));
  • Pre-prepared dialogs:
    This package provides some pre-customized dialogs:
 showQudsConfirmDeleteDialog(context,
              onDeletePressed: () => showQudsToast(context,
                  toastTime: QudsToastTime.VeryShort,
                  leadingActions: [
                    QudsAutoAnimatedCombinedIcons(
                        startIcon: Icons.delete, endIcon: Icons.done)
                  ],
                  content: Text('Deleted!'),
                  trailingActions: [
                    InkWell(
                        onTap: () {
                          showQudsToast(context,
                              toastTime: QudsToastTime.VeryShort,
                              content: Text('Undo pressed'));
                        },
                        child: Container(
                            padding: EdgeInsets.all(5),
                            child: QudsAutoAnimatedCombinedIcons(
                              startIcon: CupertinoIcons.delete,
                              endIcon: CupertinoIcons.arrow_turn_up_left,
                              showStartIcon: false,
                            )))
                  ]))

QudsLightDrawer


class MainDrawer extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return QudsLightDrawer(
      bottomAboutButton: ...,
      bottomButton: ...,
      body: ...;
  }
}

QudsPopupMenu

    QudsPopupButton(
              // backgroundColor: Colors.red,
              tooltip: 'T',
              items: getMenuItems(),
              child: Icon(Icons.menu)),
      
    
List<QudsPopupMenuBase> getMenuItems() {
    return [
      QudsPopupMenuSection(
          backgroundColor: Colors.yellow.shade200,
          titleText: 'أبو أسعد الأمير',
          subTitle: Text('See your profile'),
          leading: Icon(
            Icons.redeem,
            size: 40,
          ),
          subItems: [
            QudsPopupMenuSection(
                titleText: 'Settings',
                leading: Icon(Icons.settings),
                subItems: [
                  QudsPopupMenuItem(
                      leading: Icon(Icons.logout),
                      title: Text('Logout'),
                      onPressed: () {
                        showToast('Logout Pressed!');
                      })
                ]),
          ]),
      QudsPopupMenuDivider(),
      QudsPopupMenuItem(
          leading: Icon(Icons.info_outline),
          title: Text('Give Feedback'),
          subTitle: Text('Help us improve our new app'),
          onPressed: () {
            showToast('Feedback Pressed!');
          }),
      QudsPopupMenuDivider(),
      QudsPopupMenuSection(
          leading: Icon(Icons.place),
          titleText: 'Settings & Privacy',
          subItems: [
            QudsPopupMenuItem(
                leading: Icon(Icons.settings),
                title: Text('Settings'),
                onPressed: () {
                  showToast('Settings Pressed!');
                }),
            QudsPopupMenuItem(
                leading: Icon(Icons.lock),
                title: Text('Privacy Checkup'),
                onPressed: () {
                  showToast('Privacy Checkup Pressed!');
                }),
            QudsPopupMenuItem(
                leading: Icon(Icons.lock_clock),
                title: Text('Privacy Shortcuts'),
                onPressed: () {
                  showToast('Privacy Shourtcuts Pressed!');
                }),
            QudsPopupMenuItem(
                leading: Icon(Icons.list),
                title: Text('Activity Log'),
                onPressed: () {
                  showToast('Activity Log Pressed!');
                }),
            QudsPopupMenuItem(
                leading: Icon(Icons.card_membership),
                title: Text('News Feed Preferences'),
                onPressed: () {
                  showToast('News Feed Preferences Pressed!');
                }),
            QudsPopupMenuItem(
                leading: Icon(Icons.language),
                title: Text('Language'),
                onPressed: () {
                  showToast('Language Pressed!');
                }),
          ]),
      QudsPopupMenuDivider(),
      QudsPopupMenuWidget(
          builder: (c) => Container(
              padding: EdgeInsets.all(10),
              child: IntrinsicHeight(
                child: Row(
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: [
                    IconButton(
                        onPressed: () {
                          showToast('Favourite Pressed!');
                        },
                        icon: Icon(
                          Icons.favorite,
                          color: Colors.red,
                        )),
                    VerticalDivider(),
                    IconButton(
                        onPressed: () {},
                        icon: Icon(
                          Icons.music_note,
                          color: Colors.blue,
                        )),
                    VerticalDivider(),
                    IconButton(
                        onPressed: () {},
                        icon: Icon(
                          Icons.umbrella,
                          color: Colors.green,
                        ))
                  ],
                ),
              )))
    ];
  }
        

QudsSplashView

class SplashScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: QudsSplashView( 
      progressIndicator: ...,
      futures: [...],
      onCompleted: ...,
      ),
    );
  }
}



Another Viewers

  • For specific time
 QudsDigitalTimeViewer(
        hour: 10,
        minute: 59,
        second: 40,
        milliSecond: 10,
      ),
  • For live time:
QudsDigitalClockViewer(
        showSeconds: true,
        showMilliSeconds: true,
      )

所属分类

源码仓库

使用此插件的项目

暂无相关数据。