Flutter:封裝ActionSheet 操作菜單

演示效果圖
在這里插入圖片描述

action_sheet_util.dart

import 'package:ducafe_ui_core/ducafe_ui_core.dart';
import 'package:flutter/material.dart';
import 'package:demo/common/index.dart';class ActionSheetUtil {/// 底部操作表/// [context] 上下文/// [title] 標題/// [items] 選項列表 [{'id': 1, 'title': '相機', 'type': 'camera'}]/// [onConfirm] 確認回調 返回選中項static void showActionSheet({required BuildContext context,required String title,required List<Map<String, dynamic>> items,required Function(Map<String, dynamic>) onConfirm,}) {showModalBottomSheet(context: context,backgroundColor: Colors.transparent,builder: (context) => Container(decoration: BoxDecoration(color: Colors.white,borderRadius: BorderRadius.only(topLeft: Radius.circular(30.w),topRight: Radius.circular(30.w),),),child: SafeArea(child: Column(mainAxisSize: MainAxisSize.min,children: [// 標題Container(height: 100.w,alignment: Alignment.center,child: TextWidget.body(title,size: 30.sp,weight: FontWeight.w600,),),// 選項列表...items.map((item) => GestureDetector(onTap: () {Navigator.pop(context);onConfirm(item);},child: Container(height: 100.w,alignment: Alignment.center,decoration: BoxDecoration(border: Border(top: BorderSide(color: const Color(0xff999999),width: 1.w,),),),child: TextWidget.body(item['title'],size: 28.sp,color: const Color(0xff333333),),),)).toList(),// 間隔Container(height: 16.w,color: const Color(0xffF4F4F4),),// 取消按鈕GestureDetector(onTap: () => Navigator.pop(context),child: Container(height: 100.w,alignment: Alignment.center,child: TextWidget.body('取消',size: 28.sp,color: const Color(0xff333333),),),),],),),),);}
}

調用時需要傳入BuildContext context


.onTap(() {controller.showImagePicker(BuildContext context);
}),/ 定義選項列表
final List<Map<String, dynamic>> actions = [{"id": 1, "title": "相機", "type": "camera"},{"id": 2, "title": "相冊", "type": "gallery"},
];// 在控制器或頁面中使用
void showImagePicker(context) async{ActionSheetUtil.showActionSheet(context: context,title: '請選擇',items: actions,onConfirm: (item) async {print('操作類型:${item['type']}');},);
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/66168.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/66168.shtml
英文地址,請注明出處:http://en.pswp.cn/web/66168.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Rust練習】28.use and pub

練習題來自&#xff1a;https://practice-zh.course.rs/crate-module/use-pub.html 1 使用 use 可以將兩個同名類型引入到當前作用域中&#xff0c;但是別忘了 as 關鍵字. use std::fmt::Result; use std::io::Result;fn main() {}利用as可以將重名的內容取別名&#xff1a;…

Nginx 可觀測性最佳實踐

Nginx 介紹 Nginx 是一個開源、輕量級、高性能的 HTTP 和反向代理服務器&#xff0c;也可以用于 IMAP/POP3 代理服務器。Nginx 因其采用的異步非阻塞工作模型&#xff0c;使其具備高并發、低資源消耗的特性。高度模塊化設計也使得 Nginx 具備很好的擴展性&#xff0c;在處理靜…

《汽車維護與修理》是什么級別的期刊?是正規期刊嗎?能評職稱嗎?

?問題解答&#xff1a; 問&#xff1a;《汽車維護與修理》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是知網收錄的正規學術期刊。 問&#xff1a;《汽車維護與修理》級別&#xff1f; 答&#xff1a;國家級。主管單位&#xff1a;中國汽車維修行業協會 …

PHP智慧小區物業管理小程序

&#x1f31f;智慧小區物業管理小程序&#xff1a;重塑社區生活&#xff0c;開啟便捷高效新篇章 &#x1f31f; 智慧小區物業管理小程序是一款基于PHPUniApp精心雕琢的智慧小區物業管理小程序&#xff0c;它猶如一股清新的科技之風&#xff0c;吹進了現代智慧小區的每一個角落…

洛谷P4868 Preprefix sum

洛谷傳送門 題目描述 前綴和&#xff08;prefix sum&#xff09;&#x1d446;&#x1d456;。 前前綴和&#xff08;preprefix sum&#xff09;則把 &#x1d446;&#x1d456; 作為原序列再進行前綴和。記再次求得前綴和第 &#x1d456; 個是 &#x1d446;&#x1d446…

機器學習中的凸函數和梯度下降法

一、凸函數 在機器學習中&#xff0c;凸函數 和 凸優化 是優化問題中的重要概念&#xff0c;許多機器學習算法的目標是優化一個凸函數。這些概念的核心思想圍繞著優化問題的簡化和求解效率。下面從簡單直觀的角度來解釋。 1. 什么是凸函數&#xff1f; 數學定義 一個函數 f…

vue3使用vue-native-websocket-vue3通訊

vue3使用vue-native-websocket-vue3通訊 插件使用一、啟用Vuex集成1.在mian.js中2.store/index.js文件中3.要websocket使用的頁面 二、啟用Piain集成1.在mian.js中2.根目錄下創建store文件夾&#xff0c;分別創建PiniaType.ts&#xff0c;store.ts&#xff0c;useSocketStore.t…

Windows圖形界面(GUI)-QT-C/C++ - Qt控件與布局系統詳解

公開視頻 -> 鏈接點擊跳轉公開課程博客首頁 -> ???鏈接點擊跳轉博客主頁 目錄 Qt布局系統(Layouts) 布局管理器基礎 高級布局技巧 嵌套布局 設置間距和邊距 常用控件詳解 按鈕類控件 QPushButton (標準按鈕) QRadioButton (單選按鈕) QCheckBox (復選框) …

深入理解 ECMAScript 2024 新特性:字符串 isWellFormed 方法

ECMAScript 2024 引入了一個新的字符串實例方法&#xff1a;String.prototype.isWellFormed。這一新增功能是為了幫助開發者更容易地驗證字符串是否為有效的 Unicode 文本。本文將詳細介紹這一方法的使用場景、實現原理及其在實際應用中的價值。 String.prototype.isWellFormed…

[Linux]Docker快速上手操作教程

前言 以下命令并不是docker的所有&#xff0c;僅涉及日常使用時最最常用的命令。 目的之一時給入門的朋友熟悉學習&#xff0c;其二時我自己偶爾使用時備忘。 一、概念 簡單介紹下docker的相關概念&#xff1a; 鏡像&#xff1a;Docker 鏡像是一個輕量級、可執行的獨立軟件…

【算法學習筆記】32:篩法求解歐拉函數

上節學習的是求一個數 n n n的歐拉函數&#xff0c;因為用的試除法&#xff0c;所以時間復雜度是 O ( n ) O(\sqrt{n}) O(n ?)&#xff0c;如果要求 m m m個數的歐拉函數&#xff0c;那么就會花 O ( m n ) O(m \sqrt{n}) O(mn ?)的時間。如果是求連續一批數的歐拉函數&#x…

生產管理看板助力節能科技公司實現數據自動化管理

在節能科技公司的生產過程中&#xff0c;數據管理的自動化是提高生產效率和產品質量的關鍵。然而&#xff0c;許多公司在數據記錄、展示、對比和存檔方面仍面臨諸多痛點&#xff0c;如產品檢測數據無法自動記錄、缺乏直觀的產線狀態展示、檢測數據對比繁瑣耗時&#xff0c;以及…

leetcode 115. 不同的子序列

題目&#xff1a;115. 不同的子序列 - 力扣&#xff08;LeetCode&#xff09; 動態規劃問題&#xff0c;f[i][j]表示s的第i個元素匹配到t的第j個元素&#xff0c;有多少種結果 f[i][j] f[i - 1][j] (s[i] t[j] ? f[i - 1][j - 1] : 0) 答案就是 f[s.length() - 1][t.len…

【C++】B2112 石頭剪子布

博客主頁&#xff1a; [小????????] 本文專欄: C 文章目錄 &#x1f4af;前言&#x1f4af;題目描述游戲規則&#xff1a;輸入格式&#xff1a;輸出格式&#xff1a;輸入輸出樣例&#xff1a;解題分析與實現 &#x1f4af;我的做法實現邏輯優點與不足 &#x1f4af…

內存快照:宕機后Redis如何實現快速恢復?

文章目錄 給哪些內存數據做快照&#xff1f;快照時數據能修改嗎?可以每秒做一次快照嗎&#xff1f;小結每課一問 更多redis相關知識 上節課&#xff0c;我們學習了 Redis 避免數據丟失的 AOF 方法。這個方法的好處&#xff0c;是每次執行只需要記錄操作命令&#xff0c;需要持…

系統架構設計師考點—項目管理

一、備考指南 項目管理主要考查的是進度管理、軟件配置管理、質量管理、風險管理等相關知識&#xff0c;近幾年都沒有考查過&#xff0c;但是有可能在案例分析中考查關鍵路徑的技術問題&#xff0c;考生了解為主。 二、重點考點 1、項目的十大管理&#xff08;速記&#xff1…

iOS - Objective-C 底層實現中的哈希表

1. 關聯對象存儲&#xff08;AssociationsHashMap&#xff09; // 關聯對象的哈希表實現 typedef DenseMap<const void *, ObjcAssociation> ObjectAssociationMap; typedef DenseMap<DisguisedPtr<objc_object>, ObjectAssociationMap> AssociationsHashMa…

兩分鐘解決 :![rejected] master -> master (fetch first) , 無法正常push到遠端庫

目錄 分析問題的原因解決 分析問題的原因 在git push的時候莫名遇到這種情況 若你在git上修改了如README.md的文件。由于本地是沒有README.md文件的&#xff0c;所以導致 遠端倉庫git和本地不同步。 將遠端、本地進行合并就可以很好的解決這個問題 注意&#xff1a;直接git pu…

Ubuntu Server 24.04 配置靜態IP

Ubuntu Server 24.04 配置靜態IP 提示&#xff1a;基于Ubuntu Server 24.04進行配置 文章目錄 Ubuntu Server 24.04 配置靜態IP一、查看網卡信息二、修改網卡信息三、使網卡配置生效四、測試 一、查看網卡信息 使用命令 ip a lo 為本地回環地址 ens33 真實網卡地址 shanfengubu…

微服務之松耦合

參考&#xff1a;https://microservices.io/post/architecture/2023/03/28/microservice-architecture-essentials-loose-coupling.html There’s actually two different types of coupling: runtime coupling - influences availability design-time coupling - influences…