结构重构

This commit is contained in:
DelLevin-Home
2026-03-12 14:33:28 +08:00
parent f63b5b1843
commit 0f221456cb
39 changed files with 106 additions and 105 deletions

View File

@@ -1,4 +1,4 @@
# MookNote - Flutter 观影阅读笔记应用 # MookNote - 极简风格的观影阅读笔记应用
## 项目简介 ## 项目简介
MookNote 是一款用于记录观影、阅读和笔记的 Android 软件,基于 Flutter 框架开发。 MookNote 是一款用于记录观影、阅读和笔记的 Android 软件,基于 Flutter 框架开发。
@@ -82,6 +82,7 @@ cd mooknote
### 2. 安装依赖 ### 2. 安装依赖
```bash ```bash
flutter clean
flutter pub get flutter pub get
# 如果失败可以先添加代理再进行get # 如果失败可以先添加代理再进行get
$env:HTTP_PROXY="http://127.0.0.1:10808" $env:HTTP_PROXY="http://127.0.0.1:10808"

View File

@@ -1,11 +1,11 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'pages/home_page.dart'; import 'pages/home_page.dart';
import 'utils/app_theme.dart'; import 'utils/theme/app_theme.dart';
import 'utils/app_router.dart'; import 'utils/app_router.dart';
import 'utils/user_prefs.dart'; import 'utils/user_prefs.dart';
import 'utils/webdav_service.dart'; import 'utils/sync/webdav_service.dart';
import 'utils/auto_backup_service.dart'; import 'utils/sync/auto_backup_service.dart';
import 'providers/app_provider.dart'; import 'providers/app_provider.dart';
void main() async { void main() async {

View File

@@ -3,9 +3,9 @@ import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:share_plus/share_plus.dart'; import 'package:share_plus/share_plus.dart';
import 'package:cross_file/cross_file.dart'; import 'package:cross_file/cross_file.dart';
import '../providers/app_provider.dart'; import '../../providers/app_provider.dart';
import '../models/data_models.dart'; import '../../models/data_models.dart';
import '../utils/toast_util.dart'; import '../../utils/toast_util.dart';
import 'book_reviews_page.dart'; import 'book_reviews_page.dart';
import 'book_excerpts_page.dart'; import 'book_excerpts_page.dart';

View File

@@ -1,8 +1,8 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../providers/app_provider.dart'; import '../../providers/app_provider.dart';
import '../models/data_models.dart'; import '../../models/data_models.dart';
import '../utils/toast_util.dart'; import '../../utils/toast_util.dart';
import 'package:uuid/uuid.dart'; import 'package:uuid/uuid.dart';
/// - / /// - /

View File

@@ -1,8 +1,8 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../providers/app_provider.dart'; import '../../providers/app_provider.dart';
import '../models/data_models.dart'; import '../../models/data_models.dart';
import '../utils/toast_util.dart'; import '../../utils/toast_util.dart';
import 'book_excerpt_form_page.dart'; import 'book_excerpt_form_page.dart';
/// ///

View File

@@ -4,10 +4,10 @@ import 'package:image_picker/image_picker.dart';
import 'package:path_provider/path_provider.dart'; import 'package:path_provider/path_provider.dart';
import 'package:path/path.dart' as p; import 'package:path/path.dart' as p;
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../providers/app_provider.dart'; import '../../providers/app_provider.dart';
import '../models/data_models.dart'; import '../../models/data_models.dart';
import '../utils/toast_util.dart'; import '../../utils/toast_util.dart';
import '../utils/image_path_helper.dart'; import '../../utils/image_path_helper.dart';
/// / - /// / -
class BookFormPage extends StatefulWidget { class BookFormPage extends StatefulWidget {

View File

@@ -1,8 +1,8 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../providers/app_provider.dart'; import '../../providers/app_provider.dart';
import '../models/data_models.dart'; import '../../models/data_models.dart';
import '../utils/toast_util.dart'; import '../../utils/toast_util.dart';
import 'package:uuid/uuid.dart'; import 'package:uuid/uuid.dart';
/// / - /// / -

View File

@@ -1,8 +1,8 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../providers/app_provider.dart'; import '../../providers/app_provider.dart';
import '../models/data_models.dart'; import '../../models/data_models.dart';
import '../utils/toast_util.dart'; import '../../utils/toast_util.dart';
import 'book_review_form_page.dart'; import 'book_review_form_page.dart';
/// ///

View File

@@ -1,9 +1,9 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../providers/app_provider.dart'; import '../../providers/app_provider.dart';
import '../models/data_models.dart'; import '../../models/data_models.dart';
import '../widgets/book_status_bar.dart'; import '../../widgets/book_status_bar.dart';
import '../widgets/book_list_item.dart'; import '../../widgets/book_list_item.dart';
/// ///
class BookTabPage extends StatelessWidget { class BookTabPage extends StatelessWidget {

View File

@@ -1,9 +1,9 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../providers/app_provider.dart'; import '../providers/app_provider.dart';
import 'movie_tab_page.dart'; import 'movies/movie_tab_page.dart';
import 'book_tab_page.dart'; import 'book/book_tab_page.dart';
import 'note_tab_page.dart'; import 'note/note_tab_page.dart';
import 'search_page.dart'; import 'search_page.dart';
/// 主内容页 - 观影/阅读/笔记标签页 /// 主内容页 - 观影/阅读/笔记标签页

View File

@@ -6,9 +6,9 @@ import 'package:path/path.dart' as path;
import 'package:share_plus/share_plus.dart'; import 'package:share_plus/share_plus.dart';
import 'package:cross_file/cross_file.dart'; import 'package:cross_file/cross_file.dart';
import 'package:permission_handler/permission_handler.dart'; import 'package:permission_handler/permission_handler.dart';
import '../providers/app_provider.dart'; import '../../providers/app_provider.dart';
import '../models/data_models.dart'; import '../../models/data_models.dart';
import '../utils/toast_util.dart'; import '../../utils/toast_util.dart';
import 'movie_reviews_page.dart'; import 'movie_reviews_page.dart';
import 'movie_posters_page.dart'; import 'movie_posters_page.dart';

View File

@@ -4,10 +4,10 @@ import 'package:image_picker/image_picker.dart';
import 'package:path_provider/path_provider.dart'; import 'package:path_provider/path_provider.dart';
import 'package:path/path.dart' as p; import 'package:path/path.dart' as p;
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../providers/app_provider.dart'; import '../../providers/app_provider.dart';
import '../models/data_models.dart'; import '../../models/data_models.dart';
import '../utils/toast_util.dart'; import '../../utils/toast_util.dart';
import '../utils/image_path_helper.dart'; import '../../utils/image_path_helper.dart';
/// / - /// / -
class MovieFormPage extends StatefulWidget { class MovieFormPage extends StatefulWidget {

View File

@@ -4,9 +4,9 @@ import 'package:image_picker/image_picker.dart';
import 'package:path_provider/path_provider.dart'; import 'package:path_provider/path_provider.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:uuid/uuid.dart'; import 'package:uuid/uuid.dart';
import '../providers/app_provider.dart'; import '../../providers/app_provider.dart';
import '../models/data_models.dart'; import '../../models/data_models.dart';
import '../utils/toast_util.dart'; import '../../utils/toast_util.dart';
/// /Typecho /// /Typecho
class MovieFormPage extends StatefulWidget { class MovieFormPage extends StatefulWidget {

View File

@@ -6,10 +6,10 @@ import 'package:path_provider/path_provider.dart';
import 'package:path/path.dart' as p; import 'package:path/path.dart' as p;
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart'; import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
import '../providers/app_provider.dart'; import '../../providers/app_provider.dart';
import '../models/data_models.dart'; import '../../models/data_models.dart';
import '../utils/toast_util.dart'; import '../../utils/toast_util.dart';
import '../utils/image_path_helper.dart'; import '../../utils/image_path_helper.dart';
import 'poster_gallery_page.dart'; import 'poster_gallery_page.dart';
/// ///

View File

@@ -1,8 +1,8 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../providers/app_provider.dart'; import '../../providers/app_provider.dart';
import '../models/data_models.dart'; import '../../models/data_models.dart';
import '../utils/toast_util.dart'; import '../../utils/toast_util.dart';
/// / - /// / -
class MovieReviewFormPage extends StatefulWidget { class MovieReviewFormPage extends StatefulWidget {

View File

@@ -1,8 +1,8 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../providers/app_provider.dart'; import '../../providers/app_provider.dart';
import '../models/data_models.dart'; import '../../models/data_models.dart';
import '../utils/toast_util.dart'; import '../../utils/toast_util.dart';
import 'movie_review_form_page.dart'; import 'movie_review_form_page.dart';
/// ///

View File

@@ -1,8 +1,8 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../providers/app_provider.dart'; import '../../providers/app_provider.dart';
import '../widgets/movie_status_bar.dart'; import '../../widgets/movie_status_bar.dart';
import '../widgets/movie_list_item.dart'; import '../../widgets/movie_list_item.dart';
/// - /// -
class MovieTabPage extends StatelessWidget { class MovieTabPage extends StatelessWidget {

View File

@@ -1,6 +1,6 @@
import 'dart:io'; import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../models/data_models.dart'; import '../../models/data_models.dart';
/// - /// -
class PosterGalleryPage extends StatefulWidget { class PosterGalleryPage extends StatefulWidget {

View File

@@ -2,9 +2,9 @@ import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_markdown/flutter_markdown.dart'; import 'package:flutter_markdown/flutter_markdown.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../providers/app_provider.dart'; import '../../providers/app_provider.dart';
import '../models/data_models.dart'; import '../../models/data_models.dart';
import '../utils/toast_util.dart'; import '../../utils/toast_util.dart';
/// - /// -
class NoteDetailPage extends StatefulWidget { class NoteDetailPage extends StatefulWidget {

View File

@@ -3,10 +3,10 @@ import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:image_picker/image_picker.dart'; import 'package:image_picker/image_picker.dart';
import 'package:path/path.dart' as p; import 'package:path/path.dart' as p;
import '../providers/app_provider.dart'; import '../../providers/app_provider.dart';
import '../models/data_models.dart'; import '../../models/data_models.dart';
import '../utils/toast_util.dart'; import '../../utils/toast_util.dart';
import '../utils/image_path_helper.dart'; import '../../utils/image_path_helper.dart';
/// / - /// / -
class NoteFormPage extends StatefulWidget { class NoteFormPage extends StatefulWidget {

View File

@@ -1,8 +1,8 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../providers/app_provider.dart'; import '../../providers/app_provider.dart';
import '../models/data_models.dart'; import '../../models/data_models.dart';
import '../widgets/note_list_item.dart'; import '../../widgets/note_list_item.dart';
/// ///
class NoteTabPage extends StatefulWidget { class NoteTabPage extends StatefulWidget {

View File

@@ -10,9 +10,9 @@ import '../providers/app_provider.dart';
import '../utils/user_prefs.dart'; import '../utils/user_prefs.dart';
import '../utils/toast_util.dart'; import '../utils/toast_util.dart';
import 'recycle_bin_page.dart'; import 'recycle_bin_page.dart';
import 'backup_page.dart'; import 'sync/backup_page.dart';
import 'statistics_page.dart'; import 'statistics_page.dart';
import 'cloud_sync_page.dart'; import 'sync/cloud_sync_page.dart';
/// 个人中心页面 - 极简主义设计 /// 个人中心页面 - 极简主义设计
class ProfilePage extends StatefulWidget { class ProfilePage extends StatefulWidget {

View File

@@ -4,9 +4,9 @@ import 'package:provider/provider.dart';
import '../providers/app_provider.dart'; import '../providers/app_provider.dart';
import '../models/data_models.dart'; import '../models/data_models.dart';
import '../utils/toast_util.dart'; import '../utils/toast_util.dart';
import 'movie_detail_page.dart'; import 'movies/movie_detail_page.dart';
import 'book_detail_page.dart'; import 'book/book_detail_page.dart';
import 'note_detail_page.dart'; import 'note/note_detail_page.dart';
/// 搜索页面 /// 搜索页面
class SearchPage extends StatefulWidget { class SearchPage extends StatefulWidget {

View File

@@ -1,9 +1,9 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../providers/app_provider.dart'; import '../../providers/app_provider.dart';
import '../utils/backup_service.dart'; import '../../utils/sync/backup_service.dart';
import '../utils/auto_backup_service.dart'; import '../../utils/sync/auto_backup_service.dart';
import '../utils/toast_util.dart'; import '../../utils/toast_util.dart';
/// ///
class BackupPage extends StatefulWidget { class BackupPage extends StatefulWidget {

View File

@@ -1,8 +1,8 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../utils/toast_util.dart'; import '../../utils/toast_util.dart';
import '../utils/webdav_service.dart'; import '../../utils/sync/webdav_service.dart';
import '../providers/app_provider.dart'; import '../../providers/app_provider.dart';
/// WebDAV /// WebDAV
class WebDAVSyncPage extends StatefulWidget { class WebDAVSyncPage extends StatefulWidget {

View File

@@ -1,12 +1,12 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../models/data_models.dart'; import '../models/data_models.dart';
import '../utils/movie_dao.dart'; import '../utils/movie/movie_dao.dart';
import '../utils/book_dao.dart'; import '../utils/book/book_dao.dart';
import '../utils/note_dao.dart'; import '../utils/note/note_dao.dart';
import '../utils/movie_review_dao.dart'; import '../utils/movie/movie_review_dao.dart';
import '../utils/movie_poster_dao.dart'; import '../utils/movie/movie_poster_dao.dart';
import '../utils/book_review_dao.dart'; import '../utils/book/book_review_dao.dart';
import '../utils/book_excerpt_dao.dart'; import '../utils/book/book_excerpt_dao.dart';
import '../utils/image_path_helper.dart'; import '../utils/image_path_helper.dart';
/// 应用全局状态管理 /// 应用全局状态管理

View File

@@ -1,11 +1,11 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../models/data_models.dart'; import '../models/data_models.dart';
import '../pages/movie_form_page.dart'; import '../pages/movies/movie_form_page.dart';
import '../pages/book_form_page.dart'; import '../pages/book/book_form_page.dart';
import '../pages/note_form_page.dart'; import '../pages/note/note_form_page.dart';
import '../pages/movie_detail_page.dart'; import '../pages/movies/movie_detail_page.dart';
import '../pages/book_detail_page.dart'; import '../pages/book/book_detail_page.dart';
import '../pages/note_detail_page.dart'; import '../pages/note/note_detail_page.dart';
/// 路由生成器 /// 路由生成器
class AppRouter { class AppRouter {

View File

@@ -1,6 +1,6 @@
import 'package:sqflite/sqflite.dart'; import 'package:sqflite/sqflite.dart';
import '../models/data_models.dart'; import '../../models/data_models.dart';
import 'database_helper.dart'; import '../database_helper.dart';
/// 访 /// 访
class BookDao { class BookDao {

View File

@@ -1,6 +1,6 @@
import 'package:sqflite/sqflite.dart'; import 'package:sqflite/sqflite.dart';
import '../models/data_models.dart'; import '../../models/data_models.dart';
import 'database_helper.dart'; import '../database_helper.dart';
/// 访 /// 访
class BookExcerptDao { class BookExcerptDao {

View File

@@ -1,6 +1,6 @@
import 'package:sqflite/sqflite.dart'; import 'package:sqflite/sqflite.dart';
import '../models/data_models.dart'; import '../../models/data_models.dart';
import 'database_helper.dart'; import '../database_helper.dart';
/// 访 /// 访
class BookReviewDao { class BookReviewDao {

View File

@@ -1,6 +1,6 @@
import 'package:sqflite/sqflite.dart'; import 'package:sqflite/sqflite.dart';
import '../models/data_models.dart'; import '../../models/data_models.dart';
import 'database_helper.dart'; import '../database_helper.dart';
/// 访 /// 访
class MovieDao { class MovieDao {

View File

@@ -1,6 +1,6 @@
import 'package:sqflite/sqflite.dart'; import 'package:sqflite/sqflite.dart';
import '../models/data_models.dart'; import '../../models/data_models.dart';
import 'database_helper.dart'; import '../database_helper.dart';
/// 访 /// 访
class MoviePosterDao { class MoviePosterDao {

View File

@@ -1,6 +1,6 @@
import 'package:sqflite/sqflite.dart'; import 'package:sqflite/sqflite.dart';
import '../models/data_models.dart'; import '../../models/data_models.dart';
import 'database_helper.dart'; import '../database_helper.dart';
/// 访 /// 访
class MovieReviewDao { class MovieReviewDao {

View File

@@ -1,6 +1,6 @@
import 'package:sqflite/sqflite.dart'; import 'package:sqflite/sqflite.dart';
import '../models/data_models.dart'; import '../../models/data_models.dart';
import 'database_helper.dart'; import '../database_helper.dart';
/// 访 /// 访
class NoteDao { class NoteDao {

View File

@@ -7,7 +7,7 @@ import 'package:file_picker/file_picker.dart';
import 'package:path_provider/path_provider.dart'; import 'package:path_provider/path_provider.dart';
import 'package:path/path.dart' as path; import 'package:path/path.dart' as path;
import 'package:share_plus/share_plus.dart'; import 'package:share_plus/share_plus.dart';
import 'database_helper.dart'; import '../database_helper.dart';
/// - /// -
class BackupService { class BackupService {

View File

@@ -8,7 +8,7 @@ import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart' as p; import 'package:path/path.dart' as p;
import 'package:archive/archive.dart'; import 'package:archive/archive.dart';
import 'package:archive/archive_io.dart'; import 'package:archive/archive_io.dart';
import 'database_helper.dart'; import '../database_helper.dart';
/// WebDAV /// WebDAV
class SyncResult { class SyncResult {