[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-9252":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":30,"readmeContent":31,"aiSummary":32,"trendingCount":16,"starSnapshotCount":16,"syncStatus":33,"lastSyncTime":34,"discoverSource":35},9252,"flutter-todos","asjqkkkk\u002Fflutter-todos","asjqkkkk","📝 one day list app created by flutter!","",null,"Dart",2123,461,41,11,0,1,60.09,"MIT License",false,"master",true,[24,25,26,27,28,29],"colorful-themes","custom-theme","dio","flutter","mvp","todolist","2026-06-12 04:00:43","![image](https:\u002F\u002Fuser-images.githubusercontent.com\u002F30992818\u002F62599565-25c06000-b91f-11e9-8b5c-63efecdeeef6.png)\n\n\n![image](https:\u002F\u002Fuser-images.githubusercontent.com\u002F30992818\u002F62850471-84b61880-bd15-11e9-80d7-e2ed87aee4fe.png)\n\nLanguage:[简体中文](https:\u002F\u002Fgithub.com\u002Fasjqkkkk\u002Ftodo-list-app\u002Fblob\u002Fmaster\u002FREADME_ZH.md)|[English](https:\u002F\u002Fgithub.com\u002Fasjqkkkk\u002Ftodo-list-app\u002Fblob\u002Fmaster\u002FREADME.md)\n\n[![support](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fplatform-flutter%7Cdart%20vm-ff69b4.svg?style=flat-square)](https:\u002F\u002Fgithub.com\u002Fasjqkkkk\u002Ftodo-list-app)\n[![GitHub license](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fasjqkkkk\u002Ftodo-list-app)](https:\u002F\u002Fgithub.com\u002Fasjqkkkk\u002Ftodo-list-app\u002Fblob\u002Fmaster\u002FLICENSE)\n[![Build Status](https:\u002F\u002Ftravis-ci.org\u002Fasjqkkkk\u002Fflutter-todos.svg?branch=master)](https:\u002F\u002Ftravis-ci.org\u002Fasjqkkkk\u002Fflutter-todos)\n[![apkdownload](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdownload-apk-brightgreen)](https:\u002F\u002Fgithub.com\u002Fasjqkkkk\u002Fflutter-todos\u002Freleases\u002Fdownload\u002Fv1.1.0\u002Ftodo-list.apk)\n\n\n| \u003Cimg width=\"150\" alt=\"018\" src=\"https:\u002F\u002Fuser-images.githubusercontent.com\u002F30992818\u002F65006496-c7cb6300-d935-11e9-839b-0f84c8c1b20b.png\"\u002F> | \u003Cimg width=\"150\" alt=\"018\" src=\"https:\u002F\u002Fuser-images.githubusercontent.com\u002F30992818\u002F65006498-c863f980-d935-11e9-88c2-bc2308248da9.png\"\u002F> | \u003Cimg width=\"150\" alt=\"018\" src=\"https:\u002F\u002Fuser-images.githubusercontent.com\u002F30992818\u002F65006501-c9952680-d935-11e9-8bc7-0f94031a9942.png\"\u002F> | \u003Cimg width=\"150\" alt=\"018\" src=\"https:\u002F\u002Fuser-images.githubusercontent.com\u002F30992818\u002F65006492-c732cc80-d935-11e9-89c3-7e75df55c3d4.png\"\u002F> |\n|---|---|---|---|\n|\u003Cimg width=\"150\" alt=\"018\" src=\"https:\u002F\u002Fuser-images.githubusercontent.com\u002F30992818\u002F65006481-c437dc00-d935-11e9-89c5-ca82ecfad87f.png\"\u002F> | \u003Cimg width=\"150\" alt=\"018\" src=\"https:\u002F\u002Fuser-images.githubusercontent.com\u002F30992818\u002F65006482-c4d07280-d935-11e9-9ae5-b84eea52febb.png\"\u002F> | \u003Cimg width=\"150\" alt=\"018\" src=\"https:\u002F\u002Fuser-images.githubusercontent.com\u002F30992818\u002F65006484-c4d07280-d935-11e9-90a7-bfa99d2394d9.png\"\u002F> | \u003Cimg width=\"150\" alt=\"018\" src=\"https:\u002F\u002Fuser-images.githubusercontent.com\u002F30992818\u002F65006486-c5690900-d935-11e9-9ec9-e53fa5a57d7c.png\"\u002F>  |\n| \u003Cimg width=\"150\" alt=\"018\" src=\"https:\u002F\u002Fuser-images.githubusercontent.com\u002F30992818\u002F65006487-c5690900-d935-11e9-9459-d10928aa8440.png\"\u002F> | \u003Cimg width=\"150\" alt=\"018\" src=\"https:\u002F\u002Fuser-images.githubusercontent.com\u002F30992818\u002F65006488-c6019f80-d935-11e9-8751-745a22443b73.png\"\u002F> | \u003Cimg width=\"150\" alt=\"018\" src=\"https:\u002F\u002Fuser-images.githubusercontent.com\u002F30992818\u002F65006489-c69a3600-d935-11e9-8d3b-ac226d54b7f9.png\"\u002F> |   |\n\n\n\n# Introduction\n\n[Source of inspiration](https:\u002F\u002Fdribbble.com\u002Fshots\u002F3812962-iPhone-X-Todo-Concept)\n\n\n> “One Day list ”\nis a small, simple and beautiful app，\nIt can help you keep track of your daily plans.\nIf you happen to have the habit of writing a mission plan, then it must be perfect for you.\n\nFor users and developers, I will introduce them separately\n\nBefore we start, you can take a look at the demo:\n\n\n\u003Cimg width=\"200\" alt=\"018\" src=\"https:\u002F\u002Fuser-images.githubusercontent.com\u002F30992818\u002F63140875-f80da200-c015-11e9-8b14-60d6725620f1.gif\"\u002F>\n\n## Introduction to the user\n\n\n### Colorful Themes\n\n\nIn the app, you can switch between the theme colors in the theme switching interface.The app comes with six default themes, which are the color combinations I've chosen over many attempts. You can also choose a custom theme color.\n\nChange Theme | Custom Theme\n---|---\n\u003Cimg width=\"200\" alt=\"018\" src=\"https:\u002F\u002Fuser-images.githubusercontent.com\u002F30992818\u002F65006481-c437dc00-d935-11e9-89c5-ca82ecfad87f.png\"> | \u003Cimg width=\"200\" alt=\"018\" src=\"https:\u002F\u002Fuser-images.githubusercontent.com\u002F30992818\u002F65006482-c4d07280-d935-11e9-9ae5-b84eea52febb.png\">\n\n\n### Colorful Task Icons\n\n\nIn the app, each task comes with an icon, and the app provides all the **Material Design** style icons that Flutter comes with. You can customize with any color.\n\nIcon Setting | Custom Icon\n---|---\n\u003Cimg width=\"200\" alt=\"018\" src=\"https:\u002F\u002Fuser-images.githubusercontent.com\u002F30992818\u002F65006484-c4d07280-d935-11e9-90a7-bfa99d2394d9.png\"> | \u003Cimg width=\"200\" alt=\"018\" src=\"https:\u002F\u002Fuser-images.githubusercontent.com\u002F30992818\u002F65006486-c5690900-d935-11e9-9ec9-e53fa5a57d7c.png\">\n\n\n\n### Diverse Custom Combinations\n\n\nIn the app, there are a number of other operations that you can customize.\n\nFor example, the head of the homepage slide bar displays content, of course, there are some other operations that you will experience on your own.\n\nNavigator Setting | Settings | MainPage background\n---|---|---\n\u003Cimg width=\"200\" alt=\"018\" src=\"https:\u002F\u002Fuser-images.githubusercontent.com\u002F30992818\u002F65006487-c5690900-d935-11e9-9459-d10928aa8440.png\"> | \u003Cimg width=\"200\" alt=\"018\" src=\"https:\u002F\u002Fuser-images.githubusercontent.com\u002F30992818\u002F65006488-c6019f80-d935-11e9-8751-745a22443b73.png\"> | \u003Cimg width=\"200\" alt=\"018\" src=\"https:\u002F\u002Fuser-images.githubusercontent.com\u002F30992818\u002F65006496-c7cb6300-d935-11e9-839b-0f84c8c1b20b.png\">\n\n\n\n\n### Done List\n\n\nWhen you have completed a task, the task will be moved from the home page to the done list page, where you can see some additional information about the task.\n\n\u003Cimg width=\"200\" alt=\"018\" src=\"https:\u002F\u002Fuser-images.githubusercontent.com\u002F30992818\u002F65006489-c69a3600-d935-11e9-8d3b-ac226d54b7f9.png\">\n\nThen, the introduction to the user ends here.\n\nThe following is the time for the majority of developers!\n\n## Introduction to the Developer\n\n> If you have a strong interest in Flutter and have been slow to act, then don't hesitate, hurry up! This project is perfect for getting started with Flutter.\n\n\nLet me introduce you to the internal structure of this project.\n\n\n### Packages\n\n\nSome very good packages are used in the project, and I am especially grateful to these developers for keeping my hair healthy.\n\n\nBelow are the information about these packages.\n\n\npackage | explain\n---|---\n[dio](https:\u002F\u002Fpub.flutter-io.cn\u002Fpackages\u002Fdio) | network request\n[shared_preferences](https:\u002F\u002Fpub.flutter-io.cn\u002Fpackages\u002Fshared_preferences) | local storage\n[provider](https:\u002F\u002Fpub.flutter-io.cn\u002Fpackages\u002Fprovider) | state management\n[test](https:\u002F\u002Fpub.flutter-io.cn\u002Fpackages\u002Ftest) | unit test\n[carousel_slider](https:\u002F\u002Fpub.flutter-io.cn\u002Fpackages\u002Fcarousel_slider) | slide control\n[circle_list](https:\u002F\u002Fpub.flutter-io.cn\u002Fpackages\u002Fcircle_list) | circle list\n[intl](https:\u002F\u002Fpub.flutter-io.cn\u002Fpackages\u002Fintl) | change language \n[sqflite](https:\u002F\u002Fpub.flutter-io.cn\u002Fpackages\u002Fsqflite) | sqlite database\n[flutter_colorpicker](https:\u002F\u002Fpub.flutter-io.cn\u002Fpackages\u002Fflutter_colorpicker) | color picker\n[cached_network_image](https:\u002F\u002Fpub.flutter-io.cn\u002Fpackages\u002Fcached_network_image) | image cache\n[image_picker](https:\u002F\u002Fpub.flutter-io.cn\u002Fpackages\u002Fimage_picker) | image picker\n[permission_handler](https:\u002F\u002Fpub.flutter-io.cn\u002Fpackages\u002Fpermission_handler) | request for permissions\n[path_provider](https:\u002F\u002Fpub.flutter-io.cn\u002Fpackages\u002Fpath_provider) | get path\n[image_crop](https:\u002F\u002Fpub.flutter-io.cn\u002Fpackages\u002Fimage_crop) | image crop\n[flutter_svg](https:\u002F\u002Fpub.flutter-io.cn\u002Fpackages\u002Fflutter_svg) | svg pictures\n[package_info](https:\u002F\u002Fpub.flutter-io.cn\u002Fpackages\u002Fpackage_info) | get package info\n[flutter_webview_plugin](https:\u002F\u002Fpub.flutter-io.cn\u002Fpackages\u002Fflutter_webview_plugin) | webview\n[pull_to_refresh](https:\u002F\u002Fpub.flutter-io.cn\u002Fpackages\u002Fpull_to_refresh) | pull to refresh data\n[photo_view](https:\u002F\u002Fpub.flutter-io.cn\u002Fpackages\u002Fphoto_view) | show the picture\n[url_launcher](https:\u002F\u002Fpub.flutter-io.cn\u002Fpackages\u002Furl_launcher) | open app store\n[open_file](https:\u002F\u002Fpub.flutter-io.cn\u002Fpackages\u002Fopen_file) | open apk file\n[flare_flutter](https:\u002F\u002Fpub.flutter-io.cn\u002Fpackages\u002Fflare_flutter) | flare animation\n[encrypt](https:\u002F\u002Fpub.flutter-io.cn\u002Fpackages\u002Fencrypt) | encrypt password\n[flutter_staggered_animations](https:\u002F\u002Fpub.flutter-io.cn\u002Fpackages\u002Fflutter_staggered_animations) | listview animation\n\n\n### Project Structure\n\nThe state management framework used by the project is \u003Ccode>Provider\u003C\u002Fcode> , and the architecture of the entire project is as follows\n\n![image](https:\u002F\u002Fuser-images.githubusercontent.com\u002F30992818\u002F62599801-c4e55780-b91f-11e9-8acd-5173bc5f6f38.png)\n\n- The View layer is used to display layouts and is a variety of **StatelessWidget** pages wrapped by **ChangeNotifierProvider**\n- The Model layer is used to process data and is a variety of Model classes that inherit **ChangeNotifier**\n- The Logic layer does not save any data, only logical operations\n\n\n\nDoes it look like the **MVP** pattern in Android? In fact, they are all similar, but the names are slightly different. You can also think of the above mode as the MVP mode.\n\n\nFlutter is particularly well suited for this architectural model, because the view changes with the data, you basically don't have to care about the View, just go and operate on the data.\n\n### Directory Structure\n\nThe project directory structure is as follows:\n\n```\n├── android\n├── build\n├── images\n├── intl.sh\n├── ios\n├── lib\n├── local_json\n├── pubspec.lock\n├── pubspec.yaml\n├── res\n├── svgs\n├── test\n└── todo_list.iml\n\n```\n\n\nLet me explain the other directories besides **lib**:\n\ndirectory | explain\n---|---\nimages | For storing various pictures\nlocal_json | I encapsulate the Icon information of Flutter into a Json file and store it in this directory\nres | Store the language files generated by the \"intl\" plugin\nsvgs | Store images in svg format\n\nThen the lib directory\n\n\n![image](https:\u002F\u002Fuser-images.githubusercontent.com\u002F30992818\u002F62599609-41c40180-b91f-11e9-81a2-dd297c8c56aa.png)\n\n\n\ndirectory | explain\n---|---\nconfig | Store various configuration classes, such as Dio request encapsulation class, etc.\ndatabase | Store database operation related classes\ni10n | Class for storing internationalized related operations\nitems | Item class that stores part of the List list\njson | Various network requests, databases, etc. related json files\nlogic | Locig layer directory\nmodel | Model layer directory\npages | Store each page, which is the directory of the View layer\nutils | Packaged tools, such as file operations\nwidgets | custom widgets\n\n\n# ToDo\n\n- [x] Icon search function\n- [x] Feedback display wall\n- [x] Email account login\n- [x] MainPage's background now supports network picture\n- [ ] Custom task details page font size\n- [ ] Geek news\n- [x] Whether to show the opening animation\n\n\n\n\n# Appendix\n\n## app download\n\nAndroid download link：\n\n\n\n\u003Cimg width=\"250\" height=\"250\" src=\"https:\u002F\u002Fuser-images.githubusercontent.com\u002F30992818\u002F65225126-225fed00-daf7-11e9-9eb7-cd21e6b1cc95.png\"\u002F>\n\nIos download link：\n\n  I haven't purchased an iOS developer account for 99$ a year\n  \n    Note: The current project running environment is the version of flutter v1.9.1+hotfix.6. The modified version has more destructive fixes than before.\n    If your version of flutter is lower than the current version, some third-party libraries that are dependent on the project will not run. Please lower their version at that time.\n    \n    The following is a third-party library that needs to be modified under version 1.5.4.\n    \n    -   flutter_svg: ^0.12.4+2\n    -   image_crop: ^0.2.1\n    -   flare_flutter: ^1.5.4\n    -   photo_view: ^0.3.3\n\n\nIf you think this app is good, or if this project helps you, give this project a Star. The project will continue to be updated and maintained afterwards.！\n\n","flutter-todos 是一个使用 Flutter 框架开发的日程管理应用。该项目通过 MVP 架构模式实现，支持自定义主题和多彩主题，采用 Dio 进行网络请求处理。其核心功能包括添加、编辑和删除待办事项，以及为用户提供美观且直观的操作界面。适合需要记录日常任务或计划的个人用户，同时也可作为学习 Flutter 开发和 MVP 设计模式的参考案例。",2,"2026-06-11 03:21:53","top_language"]