diff --git a/lib/main.dart b/lib/main.dart index 1fb9000..d041f39 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -4,7 +4,6 @@ import 'package:flisp_app/provider/flisp_provider.dart'; import 'package:flisp_app/utils/notify_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; -import 'package:flutter_quill/flutter_quill.dart'; import 'package:hive_flutter/adapters.dart'; import 'package:provider/provider.dart'; @@ -35,7 +34,7 @@ void main() async{ // todosBox.clear(); final flispBox = await Hive.openBox('flisps'); - // flispBox.clear(); + flispBox.clear(); // notifyService.cancelAllNotifications(); @@ -58,8 +57,7 @@ class MyApp extends StatelessWidget { localizationsDelegates: [ GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, - GlobalCupertinoLocalizations.delegate, - FlutterQuillLocalizations.delegate, + GlobalCupertinoLocalizations.delegate ], supportedLocales: [ const Locale('zh'), diff --git a/lib/pages/flisp_page.dart b/lib/pages/flisp_page.dart index 2968c47..264c2f6 100644 --- a/lib/pages/flisp_page.dart +++ b/lib/pages/flisp_page.dart @@ -82,22 +82,20 @@ class FlispPageState extends State { final formKey = GlobalKey(); - showAwesomeDialog( + buildModalBottom( context: context, + title: isEditing ? '编辑闪灵' : '创建闪灵', body: FlispForm( formKey: formKey, isEditing: isEditing, initialFlisp: flisp, + onOk: () { + if (formKey.currentState!.saveAndValidate()) { + Navigator.of(context).pop(); + _saveFlisp(isEditing, flispProvider.formItem); + } + }, ), - onOk: () { - if (formKey.currentState!.saveAndValidate()) { - Navigator.of(context).pop(); - _saveFlisp(isEditing, flispProvider.formItem); - } - }, - onCancel: () { - flispProvider.resetForm(); - }, ); } diff --git a/lib/widgets/common.dart b/lib/widgets/common.dart index 1d36ae9..d8e2969 100644 --- a/lib/widgets/common.dart +++ b/lib/widgets/common.dart @@ -24,3 +24,78 @@ Container buildCard({Widget? child}) { child: child, ); } + +void buildModalBottom({ + required BuildContext context, + required String title, + required Widget body, +}) { + showModalBottomSheet( + context: context, + isScrollControlled: true, + backgroundColor: Colors.transparent, + builder: (BuildContext context) { + return GestureDetector( + onTap: () => Navigator.of(context).pop(), + child: Container( + color: Color.fromRGBO(0, 0, 0, 0.001), + child: GestureDetector( + onTap: () {}, + child: DraggableScrollableSheet( + initialChildSize: 0.6, + minChildSize: 0.4, + maxChildSize: 0.9, + builder: (_, controller) { + return Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.only( + topLeft: Radius.circular(24), + topRight: Radius.circular(24), + ), + ), + child: buildModalBottomBody(context, title, body), + ); + }, + ), + ), + ), + ); + }, + ); +} + +Widget buildModalBottomBody(BuildContext context, String title, Widget body) { + return Column( + children: [ + // 拖拽指示条 + Container( + margin: EdgeInsets.only(top: 12, bottom: 4), + width: 48, + height: 4, + decoration: BoxDecoration( + color: Colors.grey[400], + borderRadius: BorderRadius.circular(2), + ), + ), + + // 标题栏 + Padding( + padding: EdgeInsets.symmetric(horizontal: 8, vertical: 4), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + title, + style: TextStyle(fontSize: 20, fontWeight: FontWeight.w700), + ), + ], + ), + ), + + Divider(height: 1, thickness: 1), + + Expanded(child: Padding(padding: EdgeInsets.all(12), child: body)), + ], + ); +} diff --git a/lib/widgets/flisp_form.dart b/lib/widgets/flisp_form.dart index 74f9cfd..355e9a5 100644 --- a/lib/widgets/flisp_form.dart +++ b/lib/widgets/flisp_form.dart @@ -8,11 +8,13 @@ class FlispForm extends StatefulWidget { final GlobalKey formKey; final bool isEditing; final Flisp? initialFlisp; + final VoidCallback onOk; const FlispForm({ super.key, required this.formKey, required this.isEditing, + required this.onOk, this.initialFlisp, }); @@ -28,30 +30,9 @@ class _FlispFormState extends State { @override Widget build(BuildContext context) { - final int maxContentCount = 30; + final int maxContentCount = 100; final provider = Provider.of(context); - Widget buildTitle() { - return Row( - children: [ - Icon( - widget.isEditing ? Icons.edit_note : Icons.add_task, - color: Colors.orange, - size: 24, - ), - SizedBox(width: 8), - Text( - widget.isEditing ? '编辑闪灵' : '添加闪灵', - style: TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold, - color: Colors.orange, - ), - ), - ], - ); - } - FormBuilderTextField buildContentField() { return FormBuilderTextField( name: 'content', @@ -62,8 +43,7 @@ class _FlispFormState extends State { }); }, decoration: InputDecoration( - labelText: '内容', - hintText: '请输入闪灵内容...', + hintText: '记录你的灵感瞬间...', counterText: '', suffixText: '${provider.formItem.content.length}/$maxContentCount', border: OutlineInputBorder( @@ -80,12 +60,16 @@ class _FlispFormState extends State { ), filled: true, fillColor: Colors.white, - prefixIcon: Icon(Icons.description, color: Colors.green), contentPadding: EdgeInsets.symmetric(horizontal: 16, vertical: 14), ), - maxLines: 3, + minLines: 4, + maxLines: 8, maxLength: maxContentCount, validator: (value) { + if (value != null && value.isEmpty) { + return '请输入内容'; + } + if (value != null && value.length > maxContentCount) { return '内容不能超过$maxContentCount个字符'; } @@ -94,79 +78,208 @@ class _FlispFormState extends State { ); } - FormBuilderRadioGroup builderRadioGroup() { - return FormBuilderRadioGroup( - name: 'tag', - initialValue: provider.formItem.tag, - decoration: InputDecoration( - border: InputBorder.none, - contentPadding: EdgeInsets.zero, + // 图标按钮组件 + Widget buildIconButton({ + required IconData icon, + required Color color, + required VoidCallback onTap, + }) { + return GestureDetector( + onTap: onTap, + child: Container( + width: 32, + height: 32, + decoration: BoxDecoration( + color: color.withAlpha(50), + borderRadius: BorderRadius.circular(8), + border: Border.all(color: color.withAlpha(80), width: 1), + ), + child: Icon(icon, size: 18, color: color), ), - orientation: OptionsOrientation.horizontal, - wrapSpacing: 6, - options: - FlispTag.values.map((priority) { - return FormBuilderFieldOption( - value: priority, - child: Row( - mainAxisSize: MainAxisSize.min, - children: [Text(priority.label)], - ), - ); - }).toList(), - onChanged: (value) { - if (value != null) { - setState(() { - provider.formItem.tag = value; - }); - } - }, ); } - Container buildTagField() { + Widget buildBottomButton() { return Container( - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(12), - border: Border.all(color: Colors.grey.shade300, width: 1), - ), - padding: EdgeInsets.all(12), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, + padding: EdgeInsets.only(top: 16), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ + // 功能图标区域 Row( children: [ - Icon(Icons.category, color: Colors.orange), - SizedBox(width: 6), - Text('分类'), + // 上传图片按钮 + buildIconButton( + icon: Icons.photo_library_rounded, + color: Colors.blue, + onTap: () { + // 上传图片功能 + }, + ), + + SizedBox(width: 12), + + // 选择标签按钮 + buildIconButton( + icon: Icons.local_offer_rounded, + color: Colors.orange, + onTap: () { + // 选择标签功能 + }, + ), ], ), - builderRadioGroup(), + + // 确认按钮(箭头形状) + Container( + width: 48, + height: 48, + decoration: BoxDecoration( + color: Theme.of(context).primaryColor, + borderRadius: BorderRadius.circular(24), + border: Border.all(color: Theme.of(context).primaryColor, width: 1), + ), + child: IconButton( + icon: Icon(Icons.arrow_forward_rounded, size: 24), + color: Colors.white, + onPressed: () => widget.onOk(), + ), + ), ], ), ); } - FormBuilder buildForm() { - return FormBuilder( - key: widget.formKey, - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - buildContentField(), - SizedBox(height: 12), - buildTagField(), - ], - ), + // 选择的标签显示 + Widget buildSelectedTags() { + // 模拟选择的标签 + final selectedTags = ['旅行', '美食']; + + if (selectedTags.isEmpty) return SizedBox(); + + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox(height: 8), + Wrap( + spacing: 8, + runSpacing: 8, + children: + selectedTags.map((tag) { + return Container( + padding: EdgeInsets.symmetric(horizontal: 12, vertical: 6), + decoration: BoxDecoration( + color: Colors.orange.withOpacity(0.1), + borderRadius: BorderRadius.circular(16), + border: Border.all(color: Colors.orange.withOpacity(0.3)), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + tag, + style: TextStyle( + fontSize: 12, + color: Colors.orange, + fontWeight: FontWeight.w500, + ), + ), + SizedBox(width: 4), + GestureDetector( + onTap: () { + // 删除标签 + }, + child: Icon( + Icons.close, + size: 14, + color: Colors.orange, + ), + ), + ], + ), + ); + }).toList(), + ), + SizedBox(height: 12), + ], ); } - return Padding( - padding: const EdgeInsets.all(16), + // 图片预览 + Widget buildImagePreview() { + // 模拟上传的图片 + final imageItems = [ + {'name': 'photo1.jpg'}, + ]; + + if (imageItems.isEmpty) return SizedBox(); + + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Wrap( + spacing: 8, + runSpacing: 8, + children: + imageItems.map((image) { + return Container( + padding: EdgeInsets.symmetric(horizontal: 12, vertical: 8), + decoration: BoxDecoration( + color: Colors.blue.withOpacity(0.1), + borderRadius: BorderRadius.circular(12), + border: Border.all(color: Colors.blue.withOpacity(0.3)), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon(Icons.photo, size: 16, color: Colors.blue), + SizedBox(width: 6), + Text( + image['name']!, + style: TextStyle(fontSize: 12, color: Colors.blue), + ), + SizedBox(width: 4), + GestureDetector( + onTap: () { + // 删除图片 + }, + child: Icon( + Icons.close, + size: 14, + color: Colors.blue, + ), + ), + ], + ), + ); + }).toList(), + ), + SizedBox(height: 12), + ], + ); + } + + return FormBuilder( + key: widget.formKey, child: Column( - mainAxisSize: MainAxisSize.min, - children: [buildTitle(), SizedBox(height: 20), buildForm()], + children: [ + // 文本输入区域 + Expanded( + child: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + buildContentField(), + SizedBox(height: 4), + buildSelectedTags(), + buildImagePreview(), + ], + ), + ), + ), + // 底部功能按钮行 + buildBottomButton(), + ], ), ); } diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index 41d3d2c..92ce211 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -6,18 +6,10 @@ #include "generated_plugin_registrant.h" -#include #include -#include void fl_register_plugins(FlPluginRegistry* registry) { - g_autoptr(FlPluginRegistrar) file_selector_linux_registrar = - fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin"); - file_selector_plugin_register_with_registrar(file_selector_linux_registrar); g_autoptr(FlPluginRegistrar) rive_native_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "RiveNativePlugin"); rive_native_plugin_register_with_registrar(rive_native_registrar); - g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar = - fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin"); - url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar); } diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index e2b0ef4..b7557d4 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -3,9 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST - file_selector_linux rive_native - url_launcher_linux ) list(APPEND FLUTTER_FFI_PLUGIN_LIST diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 8ef3b11..be9e5b6 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,22 +5,14 @@ import FlutterMacOS import Foundation -import file_selector_macos import flutter_local_notifications import path_provider_foundation -import quill_native_bridge_macos import rive_native import shared_preferences_foundation -import url_launcher_macos -import video_player_avfoundation func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { - FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) FlutterLocalNotificationsPlugin.register(with: registry.registrar(forPlugin: "FlutterLocalNotificationsPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) - QuillNativeBridgePlugin.register(with: registry.registrar(forPlugin: "QuillNativeBridgePlugin")) RiveNativePlugin.register(with: registry.registrar(forPlugin: "RiveNativePlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) - UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) - FVPVideoPlayerPlugin.register(with: registry.registrar(forPlugin: "FVPVideoPlayerPlugin")) } diff --git a/pubspec.lock b/pubspec.lock index bfae732..206ce7c 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -126,14 +126,6 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "1.4.0" - charcode: - dependency: transitive - description: - name: charcode - sha256: fb0f1107cac15a5ea6ef0a6ef71a807b9e4267c713bb93e00e92d737cc8dbd8a - url: "https://pub.flutter-io.cn" - source: hosted - version: "1.4.0" checked_yaml: dependency: transitive description: @@ -174,14 +166,6 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "3.1.2" - cross_file: - dependency: transitive - description: - name: cross_file - sha256: "942a4791cd385a68ccb3b32c71c427aba508a1bb949b86dff2adbe4049f16239" - url: "https://pub.flutter-io.cn" - source: hosted - version: "0.3.5" crypto: dependency: transitive description: @@ -190,14 +174,6 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "3.0.7" - csslib: - dependency: transitive - description: - name: csslib - sha256: "09bad715f418841f976c77db72d5398dc1253c21fb9c0c7f0b0b985860b2d58e" - url: "https://pub.flutter-io.cn" - source: hosted - version: "1.0.2" cupertino_icons: dependency: "direct main" description: @@ -206,14 +182,6 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "1.0.8" - dart_quill_delta: - dependency: transitive - description: - name: dart_quill_delta - sha256: bddb0b2948bd5b5a328f1651764486d162c59a8ccffd4c63e8b2c5e44be1dac4 - url: "https://pub.flutter-io.cn" - source: hosted - version: "10.8.3" dart_style: dependency: transitive description: @@ -230,14 +198,6 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "0.7.11" - diff_match_patch: - dependency: transitive - description: - name: diff_match_patch - sha256: "2efc9e6e8f449d0abe15be240e2c2a3bcd977c8d126cfd70598aee60af35c0a4" - url: "https://pub.flutter-io.cn" - source: hosted - version: "0.4.1" fake_async: dependency: transitive description: @@ -262,38 +222,6 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "7.0.1" - file_selector_linux: - dependency: transitive - description: - name: file_selector_linux - sha256: "54cbbd957e1156d29548c7d9b9ec0c0ebb6de0a90452198683a7d23aed617a33" - url: "https://pub.flutter-io.cn" - source: hosted - version: "0.9.3+2" - file_selector_macos: - dependency: transitive - description: - name: file_selector_macos - sha256: "19124ff4a3d8864fdc62072b6a2ef6c222d55a3404fe14893a3c02744907b60c" - url: "https://pub.flutter-io.cn" - source: hosted - version: "0.9.4+4" - file_selector_platform_interface: - dependency: transitive - description: - name: file_selector_platform_interface - sha256: a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b - url: "https://pub.flutter-io.cn" - source: hosted - version: "2.6.2" - file_selector_windows: - dependency: transitive - description: - name: file_selector_windows - sha256: "320fcfb6f33caa90f0b58380489fc5ac05d99ee94b61aa96ec2bff0ba81d3c2b" - url: "https://pub.flutter-io.cn" - source: hosted - version: "0.9.3+4" fixnum: dependency: transitive description: @@ -307,14 +235,6 @@ packages: description: flutter source: sdk version: "0.0.0" - flutter_colorpicker: - dependency: transitive - description: - name: flutter_colorpicker - sha256: "969de5f6f9e2a570ac660fb7b501551451ea2a1ab9e2097e89475f60e07816ea" - url: "https://pub.flutter-io.cn" - source: hosted - version: "1.1.0" flutter_form_builder: dependency: "direct main" description: @@ -323,46 +243,6 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "10.0.1" - flutter_keyboard_visibility_linux: - dependency: transitive - description: - name: flutter_keyboard_visibility_linux - sha256: "6fba7cd9bb033b6ddd8c2beb4c99ad02d728f1e6e6d9b9446667398b2ac39f08" - url: "https://pub.flutter-io.cn" - source: hosted - version: "1.0.0" - flutter_keyboard_visibility_macos: - dependency: transitive - description: - name: flutter_keyboard_visibility_macos - sha256: c5c49b16fff453dfdafdc16f26bdd8fb8d55812a1d50b0ce25fc8d9f2e53d086 - url: "https://pub.flutter-io.cn" - source: hosted - version: "1.0.0" - flutter_keyboard_visibility_platform_interface: - dependency: transitive - description: - name: flutter_keyboard_visibility_platform_interface - sha256: e43a89845873f7be10cb3884345ceb9aebf00a659f479d1c8f4293fcb37022a4 - url: "https://pub.flutter-io.cn" - source: hosted - version: "2.0.0" - flutter_keyboard_visibility_temp_fork: - dependency: transitive - description: - name: flutter_keyboard_visibility_temp_fork - sha256: e3d02900640fbc1129245540db16944a0898b8be81694f4bf04b6c985bed9048 - url: "https://pub.flutter-io.cn" - source: hosted - version: "0.1.5" - flutter_keyboard_visibility_windows: - dependency: transitive - description: - name: flutter_keyboard_visibility_windows - sha256: fc4b0f0b6be9b93ae527f3d527fb56ee2d918cd88bbca438c478af7bcfd0ef73 - url: "https://pub.flutter-io.cn" - source: hosted - version: "1.0.0" flutter_lints: dependency: "direct dev" description: @@ -400,38 +280,6 @@ packages: description: flutter source: sdk version: "0.0.0" - flutter_plugin_android_lifecycle: - dependency: transitive - description: - name: flutter_plugin_android_lifecycle - sha256: c2fe1001710127dfa7da89977a08d591398370d099aacdaa6d44da7eb14b8476 - url: "https://pub.flutter-io.cn" - source: hosted - version: "2.0.31" - flutter_quill: - dependency: "direct main" - description: - name: flutter_quill - sha256: b96bb8525afdeaaea52f5d02f525e05cc34acd176467ab6d6f35d434cf14fde2 - url: "https://pub.flutter-io.cn" - source: hosted - version: "11.5.0" - flutter_quill_delta_from_html: - dependency: transitive - description: - name: flutter_quill_delta_from_html - sha256: "0eb801ea8dd498cadc057507af5da794d4c9599ce58b2569cb3d4bb53ba8bed2" - url: "https://pub.flutter-io.cn" - source: hosted - version: "1.5.3" - flutter_quill_extensions: - dependency: "direct main" - description: - name: flutter_quill_extensions - sha256: "099dbaa962d14ac562eb028fd24d37670338352863044b7751fe642a2d2de938" - url: "https://pub.flutter-io.cn" - source: hosted - version: "11.0.0" flutter_test: dependency: "direct dev" description: flutter @@ -506,14 +354,6 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "2.0.1" - html: - dependency: transitive - description: - name: html - sha256: "6d1264f2dffa1b1101c25a91dff0dc2daee4c18e87cd8538729773c073dbf602" - url: "https://pub.flutter-io.cn" - source: hosted - version: "0.15.6" http: dependency: transitive description: @@ -538,70 +378,6 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "4.1.2" - image_picker: - dependency: transitive - description: - name: image_picker - sha256: "736eb56a911cf24d1859315ad09ddec0b66104bc41a7f8c5b96b4e2620cf5041" - url: "https://pub.flutter-io.cn" - source: hosted - version: "1.2.0" - image_picker_android: - dependency: transitive - description: - name: image_picker_android - sha256: "28f3987ca0ec702d346eae1d90eda59603a2101b52f1e234ded62cff1d5cfa6e" - url: "https://pub.flutter-io.cn" - source: hosted - version: "0.8.13+1" - image_picker_for_web: - dependency: transitive - description: - name: image_picker_for_web - sha256: "40c2a6a0da15556dc0f8e38a3246064a971a9f512386c3339b89f76db87269b6" - url: "https://pub.flutter-io.cn" - source: hosted - version: "3.1.0" - image_picker_ios: - dependency: transitive - description: - name: image_picker_ios - sha256: eb06fe30bab4c4497bad449b66448f50edcc695f1c59408e78aa3a8059eb8f0e - url: "https://pub.flutter-io.cn" - source: hosted - version: "0.8.13" - image_picker_linux: - dependency: transitive - description: - name: image_picker_linux - sha256: "1f81c5f2046b9ab724f85523e4af65be1d47b038160a8c8deed909762c308ed4" - url: "https://pub.flutter-io.cn" - source: hosted - version: "0.2.2" - image_picker_macos: - dependency: transitive - description: - name: image_picker_macos - sha256: d58cd9d67793d52beefd6585b12050af0a7663c0c2a6ece0fb110a35d6955e04 - url: "https://pub.flutter-io.cn" - source: hosted - version: "0.2.2" - image_picker_platform_interface: - dependency: transitive - description: - name: image_picker_platform_interface - sha256: "567e056716333a1647c64bb6bd873cff7622233a5c3f694be28a583d4715690c" - url: "https://pub.flutter-io.cn" - source: hosted - version: "2.11.1" - image_picker_windows: - dependency: transitive - description: - name: image_picker_windows - sha256: d248c86554a72b5495a31c56f060cf73a41c7ff541689327b1a7dbccc33adfae - url: "https://pub.flutter-io.cn" - source: hosted - version: "0.2.2" intl: dependency: "direct main" description: @@ -682,14 +458,6 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "0.1.3-main.0" - markdown: - dependency: transitive - description: - name: markdown - sha256: "935e23e1ff3bc02d390bad4d4be001208ee92cc217cb5b5a6c19bc14aaa318c1" - url: "https://pub.flutter-io.cn" - source: hosted - version: "7.3.0" matcher: dependency: transitive description: @@ -802,14 +570,6 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "6.1.0" - photo_view: - dependency: transitive - description: - name: photo_view - sha256: "1fc3d970a91295fbd1364296575f854c9863f225505c28c46e0a03e48960c75e" - url: "https://pub.flutter-io.cn" - source: hosted - version: "0.15.0" platform: dependency: transitive description: @@ -858,70 +618,6 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "1.5.0" - quill_native_bridge: - dependency: transitive - description: - name: quill_native_bridge - sha256: "76a16512e398e84216f3f659f7cb18a89ec1e141ea908e954652b4ce6cf15b18" - url: "https://pub.flutter-io.cn" - source: hosted - version: "11.1.0" - quill_native_bridge_android: - dependency: transitive - description: - name: quill_native_bridge_android - sha256: b75c7e6ede362a7007f545118e756b1f19053994144ec9eda932ce5e54a57569 - url: "https://pub.flutter-io.cn" - source: hosted - version: "0.0.1+2" - quill_native_bridge_ios: - dependency: transitive - description: - name: quill_native_bridge_ios - sha256: d23de3cd7724d482fe2b514617f8eedc8f296e120fb297368917ac3b59d8099f - url: "https://pub.flutter-io.cn" - source: hosted - version: "0.0.1" - quill_native_bridge_macos: - dependency: transitive - description: - name: quill_native_bridge_macos - sha256: "1c0631bd1e2eee765a8b06017c5286a4e829778f4585736e048eb67c97af8a77" - url: "https://pub.flutter-io.cn" - source: hosted - version: "0.0.1" - quill_native_bridge_platform_interface: - dependency: transitive - description: - name: quill_native_bridge_platform_interface - sha256: "8264a2bdb8a294c31377a27b46c0f8717fa9f968cf113f7dc52d332ed9c84526" - url: "https://pub.flutter-io.cn" - source: hosted - version: "0.0.2+1" - quill_native_bridge_web: - dependency: transitive - description: - name: quill_native_bridge_web - sha256: "7c723f6824b0250d7f33e8b6c23f2f8eb0103fe48ee7ebf47ab6786b64d5c05d" - url: "https://pub.flutter-io.cn" - source: hosted - version: "0.0.2" - quill_native_bridge_windows: - dependency: transitive - description: - name: quill_native_bridge_windows - sha256: "3f96ced19e3206ddf4f6f7dde3eb16bdd05e10294964009ea3a806d995aa7caa" - url: "https://pub.flutter-io.cn" - source: hosted - version: "0.0.2" - quiver: - dependency: transitive - description: - name: quiver - sha256: ea0b925899e64ecdfbf9c7becb60d5b50e706ade44a85b2363be2a22d88117d2 - url: "https://pub.flutter-io.cn" - source: hosted - version: "3.2.2" rive: dependency: transitive description: @@ -1119,70 +815,6 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "1.4.0" - url_launcher: - dependency: transitive - description: - name: url_launcher - sha256: f6a7e5c4835bb4e3026a04793a4199ca2d14c739ec378fdfe23fc8075d0439f8 - url: "https://pub.flutter-io.cn" - source: hosted - version: "6.3.2" - url_launcher_android: - dependency: transitive - description: - name: url_launcher_android - sha256: "81777b08c498a292d93ff2feead633174c386291e35612f8da438d6e92c4447e" - url: "https://pub.flutter-io.cn" - source: hosted - version: "6.3.20" - url_launcher_ios: - dependency: transitive - description: - name: url_launcher_ios - sha256: d80b3f567a617cb923546034cc94bfe44eb15f989fe670b37f26abdb9d939cb7 - url: "https://pub.flutter-io.cn" - source: hosted - version: "6.3.4" - url_launcher_linux: - dependency: transitive - description: - name: url_launcher_linux - sha256: "4e9ba368772369e3e08f231d2301b4ef72b9ff87c31192ef471b380ef29a4935" - url: "https://pub.flutter-io.cn" - source: hosted - version: "3.2.1" - url_launcher_macos: - dependency: transitive - description: - name: url_launcher_macos - sha256: c043a77d6600ac9c38300567f33ef12b0ef4f4783a2c1f00231d2b1941fea13f - url: "https://pub.flutter-io.cn" - source: hosted - version: "3.2.3" - url_launcher_platform_interface: - dependency: transitive - description: - name: url_launcher_platform_interface - sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029" - url: "https://pub.flutter-io.cn" - source: hosted - version: "2.3.2" - url_launcher_web: - dependency: transitive - description: - name: url_launcher_web - sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2" - url: "https://pub.flutter-io.cn" - source: hosted - version: "2.4.1" - url_launcher_windows: - dependency: transitive - description: - name: url_launcher_windows - sha256: "3284b6d2ac454cf34f114e1d3319866fdd1e19cdc329999057e44ffe936cfa77" - url: "https://pub.flutter-io.cn" - source: hosted - version: "3.1.4" vector_math: dependency: transitive description: @@ -1191,46 +823,6 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "2.1.4" - video_player: - dependency: transitive - description: - name: video_player - sha256: "0d55b1f1a31e5ad4c4967bfaa8ade0240b07d20ee4af1dfef5f531056512961a" - url: "https://pub.flutter-io.cn" - source: hosted - version: "2.10.0" - video_player_android: - dependency: transitive - description: - name: video_player_android - sha256: a8dc4324f67705de057678372bedb66cd08572fe7c495605ac68c5f503324a39 - url: "https://pub.flutter-io.cn" - source: hosted - version: "2.8.15" - video_player_avfoundation: - dependency: transitive - description: - name: video_player_avfoundation - sha256: f9a780aac57802b2892f93787e5ea53b5f43cc57dc107bee9436458365be71cd - url: "https://pub.flutter-io.cn" - source: hosted - version: "2.8.4" - video_player_platform_interface: - dependency: transitive - description: - name: video_player_platform_interface - sha256: "57c5d73173f76d801129d0531c2774052c5a7c11ccb962f1830630decd9f24ec" - url: "https://pub.flutter-io.cn" - source: hosted - version: "6.6.0" - video_player_web: - dependency: transitive - description: - name: video_player_web - sha256: "9f3c00be2ef9b76a95d94ac5119fb843dca6f2c69e6c9968f6f2b6c9e7afbdeb" - url: "https://pub.flutter-io.cn" - source: hosted - version: "2.4.0" vm_service: dependency: transitive description: @@ -1271,14 +863,6 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "3.0.3" - win32: - dependency: transitive - description: - name: win32 - sha256: "329edf97fdd893e0f1e3b9e88d6a0e627128cc17cc316a8d67fda8f1451178ba" - url: "https://pub.flutter-io.cn" - source: hosted - version: "5.13.0" xdg_directories: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 022eec9..a0578a0 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1 +1,105 @@ -name: flisp_app description: "闪灵" # The following line prevents the package from being accidentally published to # pub.dev using `flutter pub publish`. This is preferred for private packages. publish_to: 'none' # Remove this line if you wish to publish to pub.dev # The following defines the version and build number for your application. # A version number is three numbers separated by dots, like 1.2.43 # followed by an optional build number separated by a +. # Both the version and the builder number may be overridden in flutter # build by specifying --build-name and --build-number, respectively. # In Android, build-name is used as versionName while build-number used as versionCode. # Read more about Android versioning at https://developer.android.com/studio/publish/versioning # In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. version: 1.0.0+1 environment: sdk: ^3.7.0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions # consider running `flutter pub upgrade --major-versions`. Alternatively, # dependencies can be manually updated by changing the version numbers below to # the latest version available on pub.dev. To see which dependencies have newer # versions available, run `flutter pub outdated`. dependencies: flutter: sdk: flutter flutter_localizations: sdk: flutter # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 provider: ^6.1.1 # 状态管理 shared_preferences: ^2.2.2 # 本地存储 awesome_dialog: ^3.3.0 toggle_switch: ^2.3.0 fluttertoast: ^8.2.2 flutter_form_builder: ^10.0.0 form_builder_validators: ^10.0.0 intl: ^0.19.0 hive: ^2.2.3 hive_flutter: ^1.1.0 path_provider: ^2.1.1 flutter_quill: ^11.0.0 flutter_quill_extensions: ^11.0.0 flutter_local_notifications: ^18.0.0 timezone: ^0.10.1 dev_dependencies: flutter_test: sdk: flutter hive_generator: ^2.0.1 build_runner: ^2.4.6 # The "flutter_lints" package below contains a set of recommended lints to # encourage good coding practices. The lint set provided by the package is # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. flutter_lints: ^5.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec # The following section is specific to Flutter packages. flutter: # The following line ensures that the Material Icons font is # included with your application, so that you can use the icons in # the material Icons class. uses-material-design: true # To add assets to your application, add an assets section, like this: # assets: # - images/a_dot_burr.jpeg # - images/a_dot_ham.jpeg # An image asset can refer to one or more resolution-specific "variants", see # https://flutter.dev/to/resolution-aware-images # For details regarding adding assets from package dependencies, see # https://flutter.dev/to/asset-from-package # To add custom fonts to your application, add a fonts section here, # in this "flutter" section. Each entry in this list should have a # "family" key with the font family name, and a "fonts" key with a # list giving the asset and other descriptors for the font. For # example: # fonts: # - family: Schyler # fonts: # - asset: fonts/Schyler-Regular.ttf # - asset: fonts/Schyler-Italic.ttf # style: italic # - family: Trajan Pro # fonts: # - asset: fonts/TrajanPro.ttf # - asset: fonts/TrajanPro_Bold.ttf # weight: 700 # # For details regarding fonts from package dependencies, # see https://flutter.dev/to/font-from-package \ No newline at end of file +name: flisp_app +description: "闪灵" +# The following line prevents the package from being accidentally published to +# pub.dev using `flutter pub publish`. This is preferred for private packages. +publish_to: 'none' # Remove this line if you wish to publish to pub.dev + +# The following defines the version and build number for your application. +# A version number is three numbers separated by dots, like 1.2.43 +# followed by an optional build number separated by a +. +# Both the version and the builder number may be overridden in flutter +# build by specifying --build-name and --build-number, respectively. +# In Android, build-name is used as versionName while build-number used as versionCode. +# Read more about Android versioning at https://developer.android.com/studio/publish/versioning +# In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion. +# Read more about iOS versioning at +# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html +# In Windows, build-name is used as the major, minor, and patch parts +# of the product and file versions while build-number is used as the build suffix. +version: 1.0.0+1 + +environment: + sdk: ^3.7.0 + +# Dependencies specify other packages that your package needs in order to work. +# To automatically upgrade your package dependencies to the latest versions +# consider running `flutter pub upgrade --major-versions`. Alternatively, +# dependencies can be manually updated by changing the version numbers below to +# the latest version available on pub.dev. To see which dependencies have newer +# versions available, run `flutter pub outdated`. +dependencies: + flutter: + sdk: flutter + flutter_localizations: + sdk: flutter + # The following adds the Cupertino Icons font to your application. + # Use with the CupertinoIcons class for iOS style icons. + cupertino_icons: ^1.0.8 + provider: ^6.1.1 # 状态管理 + shared_preferences: ^2.2.2 # 本地存储 + awesome_dialog: ^3.3.0 + toggle_switch: ^2.3.0 + fluttertoast: ^8.2.2 + flutter_form_builder: ^10.0.0 + form_builder_validators: ^10.0.0 + intl: ^0.19.0 + hive: ^2.2.3 + hive_flutter: ^1.1.0 + path_provider: ^2.1.1 + flutter_local_notifications: ^18.0.0 + timezone: ^0.10.1 + +dev_dependencies: + flutter_test: + sdk: flutter + hive_generator: ^2.0.1 + build_runner: ^2.4.6 + + # The "flutter_lints" package below contains a set of recommended lints to + # encourage good coding practices. The lint set provided by the package is + # activated in the `analysis_options.yaml` file located at the root of your + # package. See that file for information about deactivating specific lint + # rules and activating additional ones. + flutter_lints: ^5.0.0 + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec + +# The following section is specific to Flutter packages. +flutter: + + # The following line ensures that the Material Icons font is + # included with your application, so that you can use the icons in + # the material Icons class. + uses-material-design: true + + # To add assets to your application, add an assets section, like this: + # assets: + # - images/a_dot_burr.jpeg + # - images/a_dot_ham.jpeg + + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/to/resolution-aware-images + + # For details regarding adding assets from package dependencies, see + # https://flutter.dev/to/asset-from-package + + # To add custom fonts to your application, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + # fonts: + # - family: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts from package dependencies, + # see https://flutter.dev/to/font-from-package diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 51957d7..1a3db62 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -6,15 +6,9 @@ #include "generated_plugin_registrant.h" -#include #include -#include void RegisterPlugins(flutter::PluginRegistry* registry) { - FileSelectorWindowsRegisterWithRegistrar( - registry->GetRegistrarForPlugin("FileSelectorWindows")); RiveNativePluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("RiveNativePlugin")); - UrlLauncherWindowsRegisterWithRegistrar( - registry->GetRegistrarForPlugin("UrlLauncherWindows")); } diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 6fdbe43..22806d1 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -3,9 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST - file_selector_windows rive_native - url_launcher_windows ) list(APPEND FLUTTER_FFI_PLUGIN_LIST