《HarmonyOS Next開發進階:打造功能完備的Todo應用華章》

章節 6:日期選擇器與日期處理

在這里插入圖片描述

目標
  • 學習如何使用DatePicker組件。
  • 理解日期格式化和日期計算。
內容
  1. 日期選擇器基礎
    • 使用DatePicker組件。
    • 處理日期選擇事件。
  2. 日期格式化
    • 格式化日期為友好的文本。
  3. 日期計算
    • 判斷日期是否過期或即將到期。
代碼示例
@Entry
@Component
struct DatePickerDemo {@State selectedDate: Date = new Date();@State showDatePicker: boolean = false;formatDate(date: Date): string {return `${date.getFullYear()}-${(date.getMonth() + 1).toString().padStart(2, '0')}-${date.getDate().toString().padStart(2, '0')}`;}build() {Column() {Text('選擇日期: ' + this.formatDate(this.selectedDate)).margin({ bottom: 16 })Button('選擇日期').onClick(() => { this.showDatePicker = true; })if (this.showDatePicker) {DatePicker({start: new Date('2020-01-01'),end: new Date('2030-12-31'),selected: this.selectedDate,}).onChange((value: DatePickerInfo) => {this.selectedDate = new Date(value.year, value.month - 1, value.day);}).margin({ bottom: 16 })}}}
}

章節 7:任務統計與數據可視化

目標
  • 學習如何實現任務統計。
  • 理解簡單的數據可視化方法。
內容
  1. 任務統計
    • 計算任務總數和完成率。
    • 按優先級統計任務數量。
  2. 數據可視化
    • 使用簡單的圖表展示統計數據。
  3. 示例:任務統計面板
    • 實現任務統計功能。
代碼示例
@Entry
@Component
struct TaskStatistics {@State todoList: TodoItem[] = [new TodoItem('任務1', Priority.HIGH),new TodoItem('任務2', Priority.MEDIUM),new TodoItem('任務3', Priority.LOW)];getCompletionPercentage(): number {if (this.todoList.length === 0) return 0;const completedCount = this.todoList.filter(item => item.isCompleted).length;return Math.round((completedCount / this.todoList.length) * 100);}getPriorityStats(): PriorityStatItem[] {const highStat: PriorityStatItem = { priority: Priority.HIGH, count: 0, color: '#FF3B30' };const mediumStat: PriorityStatItem = { priority: Priority.MEDIUM, count: 0, color: '#FF9500' };const lowStat: PriorityStatItem = { priority: Priority.LOW, count: 0, color: '#34C759' };this.todoList.forEach(item => {switch (item.priority) {case Priority.HIGH: highStat.count++; break;case Priority.MEDIUM: mediumStat.count++; break;case Priority.LOW: lowStat.count++; break;}});return [highStat, mediumStat, lowStat];}build() {Column() {Text('任務統計').fontSize(24).fontWeight(FontWeight.Bold).margin({ bottom: 16 })Text(`完成率: ${this.getCompletionPercentage()}%`).margin({ bottom: 16 })ForEach(this.getPriorityStats(), (stat: PriorityStatItem) => {Row() {Circle().fill(stat.color).width(12).height(12).margin({ right: 8 })Text(`${stat.priority}: ${stat.count}`)}.margin({ bottom: 8 })})}}
}

章節 8:振動反饋與用戶交互

目標
  • 學習如何使用@ohos.vibrator實現振動反饋。
  • 理解用戶交互的優化方法。
內容
  1. 振動反饋基礎
    • 使用vibrate方法實現短振動。
  2. 用戶交互優化
    • 在任務操作時提供振動反饋。
  3. 示例:振動反饋應用
    • 實現用戶交互時的振動效果。
代碼示例
import vibrator from '@ohos.vibrator';@Entry
@Component
struct VibrationDemo {vibrateShort() {try {vibrator.vibrate(10);} catch (error) {console.error('Failed to vibrate:', error);}}build() {Column() {Text('點擊按鈕體驗振動反饋').margin({ bottom: 16 })Button('短振動').onClick(() => this.vibrateShort())}}
}

章節 9:對話框與用戶提示

目標
  • 學習如何使用@ohos.promptAction顯示對話框。
  • 理解如何處理用戶輸入。
內容
  1. 對話框基礎
    • 使用showDialog方法顯示對話框。
  2. 用戶輸入處理
    • 獲取用戶選擇的結果。
  3. 示例:確認刪除對話框
    • 實現刪除任務時的確認對話框。
代碼示例
import promptAction from '@ohos.promptAction';@Entry
@Component
struct DialogDemo {async showConfirmationDialog() {try {const dialogButtons: Array<DialogButton> = [{ text: '取消', color: '#8E8E93' },{ text: '確定', color: '#FF3B30' }];const options: promptAction.ShowDialogOptions = {title: '確認刪除',message: '確定要刪除此任務嗎?',buttons: dialogButtons};const result = await promptAction.showDialog(options);if (result && result.index === 1) {console.log('用戶確認刪除');}} catch (error) {console.error('對話框顯示失敗:', error);}}build() {Column() {Text('點擊按鈕顯示對話框').margin({ bottom: 16 })Button('刪除任務').onClick(() => this.showConfirmationDialog())}}
}

章節 10:完整Todo應用實現

目標
  • 綜合應用前面章節的知識,實現一個完整的Todo應用。
  • 理解如何將各個功能模塊整合在一起。
內容
  1. 功能整合
    • 數據存儲與加載。
    • 響應式布局與主題切換。
    • 任務管理與統計。
    • 日期選擇與振動反饋。
  2. 完整代碼實現
    • 從頭到尾實現一個功能完整的Todo應用。
代碼示例

(完整代碼見用戶提供的代碼)

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

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

相關文章

迅饒科技X2Modbus網關-GetUser信息泄露漏洞

免責聲明&#xff1a;本號提供的網絡安全信息僅供參考&#xff0c;不構成專業建議。作者不對任何由于使用本文信息而導致的直接或間接損害承擔責任。如涉及侵權&#xff0c;請及時與我聯系&#xff0c;我將盡快處理并刪除相關內容。 漏洞描述 該漏洞的存在是由于GetUser接口在…

Go 原理剖析:數據結構之字符串

在 Go 語言中&#xff0c;字符串&#xff08;string&#xff09;是一個非常重要的數據類型。它看似簡單&#xff0c;但背后卻隱藏著不少有趣的原理和優化技巧。今天我們就來聊聊 Go 中字符串的底層結構、特性&#xff0c;以及如何高效地使用它。 1. 字符串的底層結構 字符串的…

【SPP】藍牙鏈路控制(LC)在SPP中互操作性深度解析

在藍牙協議棧的精密分層體系中&#xff0c;其鏈路控制&#xff08;Link Control, LC&#xff09;層作為基帶層的核心組件&#xff0c;承載著物理信道管理、連接建立與維護等關鍵任務。其互操作性要求直接決定了不同廠商設備能否實現無縫通信。本文將以藍牙技術規范中的LC互操作…

Windows C++ 排查死鎖

開發出來應用程序突然間卡死不動&#xff0c;如果其中是因為死鎖問題卡列該如何排查 下面是一個簡單的死鎖例子 #include <iostream> #include <thread> #include <mutex>std::mutex a, b;void function_a() {std::lock_guard<std::mutex> _x(a);std:…

【零基礎入門unity游戲開發——2D篇】2D 游戲場景地形編輯器——TileMap的使用介紹

考慮到每個人基礎可能不一樣&#xff0c;且并不是所有人都有同時做2D、3D開發的需求&#xff0c;所以我把 【零基礎入門unity游戲開發】 分為成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】&#xff1a;主要講解C#的基礎語法&#xff0c;包括變量、數據類型、運算符、…

【易訂貨-注冊/登錄安全分析報告】

前言 由于網站注冊入口容易被機器執行自動化程序攻擊&#xff0c;存在如下風險&#xff1a; 暴力破解密碼&#xff0c;造成用戶信息泄露&#xff0c;不符合國家等級保護的要求。短信盜刷帶來的拒絕服務風險 &#xff0c;造成用戶無法登陸、注冊&#xff0c;大量收到垃圾短信的…

GLPI 未授權SQL注入漏洞(CVE-2025-24799)

免責申明: 本文所描述的漏洞及其復現步驟僅供網絡安全研究與教育目的使用。任何人不得將本文提供的信息用于非法目的或未經授權的系統測試。作者不對任何由于使用本文信息而導致的直接或間接損害承擔責任。如涉及侵權,請及時與我們聯系,我們將盡快處理并刪除相關內容。 0x0…

基于Deepface的情緒識別c++

基于Deepface的情緒識別c 文章目錄 基于Deepface的情緒識別c簡介下載模型并轉為onnx&#xff08;facial_expression_model_weights.h5&#xff09;測試取出照片的人臉部分并處理成模型輸入格式用模型推理一下看看結果 用onnxruntime的c庫推理 簡介 DeepFace是一個基于深度學習…

Java的數據庫編程——JDBC基礎

JDBC編程 一、概述1.1 概念介紹1.2 驅動包下載1.3 導入驅動包 二、通過Java程序操作數據庫2.1 通過 JDBC 進行 插入數據 操作2.1.1 創建“數據源(DataSource)——描述要操作的數據庫、數據是在哪”2.1.2 與服務器建立連接2.1.3 構造sql語句&#xff0c;并且對字符串類型的sql進…

DeepSeek-R1 面試題匯總

Deepseek-r1 面試寶典 原文地址&#xff1a;https://articles.zsxq.com/id_91kirfu15qxw.html DeepSeek-R1 面試題匯總 DeepSeek-R1 面試題匯總 GRPO&#xff08;Group Relative Policy Optimization&#xff09;常見面試題匯總篇 DeepSeek-R1 DeepSeek-R1-Zero 常見面試題匯總…

SSL/TLS

http ssl傳輸層 -> https 安全套接層 SSL/TLS 1、核心角色與文件2、證書生成流程2.1、生成CA根證書2.2、生成服務端證書2.3 生成客戶端證書&#xff08;雙向認證&#xff09; 3、SSL/TLS 認證模式3.1、單向認證&#xff08;默認 HTTPS&#xff09;3.2、雙向認證&#xff0…

HTML 音頻(Audio)學習筆記

一、HTML 音頻概述 在 HTML 中&#xff0c;音頻可以通過多種方式播放&#xff0c;但要確保音頻在不同瀏覽器和設備上都能正常播放&#xff0c;需要掌握一些技巧。HTML5 引入了 <audio> 元素&#xff0c;為音頻播放提供了一種標準方法&#xff0c;但在 HTML4 中&#xff…

php開發rest api,哪個框架最好

在 2025 年&#xff0c;選擇適合開發 REST API 的 PHP 框架需要根據項目需求、性能要求和團隊技術棧進行權衡。以下是一些推薦的 PHP 框架及其適用場景&#xff1a; 1. Laravel 特點&#xff1a;功能豐富&#xff0c;生態系統強大&#xff0c;內置 API 資源&#xff0c;支持 …

前端入門之CSS

CSS: HTML負責定義頁面結構;JS負責處理頁面邏輯和點擊事件;CSS負責用于描述 HTML 元素的顯示方式,通過 CSS 可以控制顏色、字體、布局等。 核心語法: 選擇器: 類選擇器主要用于選中需要添加樣式的 HTML 元素。主要分為:類選擇器(.class-name { ... })、標簽選擇器(…

MCP協議的Streamable HTTP:革新數據傳輸的未來

引言 在數字化時代&#xff0c;數據傳輸的效率和穩定性是推動技術進步的關鍵。MCP&#xff08;Model Context Protocol&#xff09;作為AI生態系統中的重要一環&#xff0c;通過引入Streamable HTTP傳輸機制&#xff0c;為數據交互帶來了革命性的變化。本文將深入解讀MCP協議的…

MySQL - 索引原理與優化:深入解析B+Tree與高效查詢策略

文章目錄 引言一、BTree索引核心原理1.1 索引數據結構演化1.2 BTree的存儲結構通過主鍵查詢&#xff08;主鍵索引&#xff09;商品數據的過程通過非主鍵&#xff08;輔助索引&#xff09;查詢商品數據的過程 MySQL InnoDB 的索引原理 二、執行計劃深度解析三、索引失效的六大陷…

《K230 從熟悉到...》識別機器碼(AprilTag)

《K230 從熟悉到...》識別機器碼&#xff08;aprirltag&#xff09; tag id 《廬山派 K230 從熟悉到...》 識別機器碼&#xff08;AprilTag&#xff09; AprilTag是一種基于二維碼的視覺標記系統&#xff0c;最早是由麻省理工學院&#xff08;MIT&#xff09;在2008年開發的。A…

Linux驅動復習

應用層調用內核層函數稱為系統調用 1.硬件設備管理 1&#xff0c;字符設備驅動&#xff08;一個一個字節&#xff09;——芯片內部外設 &#xff1a;WDT,Timer&#xff0c;adc,iic&#xff0c;SPI,R,UART,LCD,CAMERA,USB,Keyboard&#xff0c;Mouse 2&#xff0c;塊設備驅動&a…

【FAQ】HarmonyOS SDK 閉源開放能力 —Account Kit(3)

1.問題描述&#xff1a; PC場景&#xff0c;青少年模式系統API不支持嗎&#xff1f; 解決方案&#xff1a; PC場景&#xff0c;青少年模式系統API不支持&#xff0c;另外文檔上的幾個API也不支持。 2.問題描述&#xff1a; 華為一鍵登錄 Beta7本地運行到手機可以拿到匿名手…

【gdutthesis模板】論文標題太長導致換頁問題解決

標題太長導致換頁問題解決方案如下&#xff1a; 調小下方數值即可