diff --git a/android/app/src/main/res/drawable-hdpi/ic_launcher_background.png b/android/app/src/main/res/drawable-hdpi/ic_launcher_background.png
new file mode 100644
index 0000000..9362da3
Binary files /dev/null and b/android/app/src/main/res/drawable-hdpi/ic_launcher_background.png differ
diff --git a/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png b/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..584769d
Binary files /dev/null and b/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png differ
diff --git a/android/app/src/main/res/drawable-hdpi/ic_launcher_monochrome.png b/android/app/src/main/res/drawable-hdpi/ic_launcher_monochrome.png
new file mode 100644
index 0000000..1c22bd9
Binary files /dev/null and b/android/app/src/main/res/drawable-hdpi/ic_launcher_monochrome.png differ
diff --git a/android/app/src/main/res/drawable-mdpi/ic_launcher_background.png b/android/app/src/main/res/drawable-mdpi/ic_launcher_background.png
new file mode 100644
index 0000000..43459f4
Binary files /dev/null and b/android/app/src/main/res/drawable-mdpi/ic_launcher_background.png differ
diff --git a/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png b/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..e896bc5
Binary files /dev/null and b/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png differ
diff --git a/android/app/src/main/res/drawable-mdpi/ic_launcher_monochrome.png b/android/app/src/main/res/drawable-mdpi/ic_launcher_monochrome.png
new file mode 100644
index 0000000..721f2e0
Binary files /dev/null and b/android/app/src/main/res/drawable-mdpi/ic_launcher_monochrome.png differ
diff --git a/android/app/src/main/res/drawable-xhdpi/ic_launcher_background.png b/android/app/src/main/res/drawable-xhdpi/ic_launcher_background.png
new file mode 100644
index 0000000..778d138
Binary files /dev/null and b/android/app/src/main/res/drawable-xhdpi/ic_launcher_background.png differ
diff --git a/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png b/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..522f054
Binary files /dev/null and b/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png differ
diff --git a/android/app/src/main/res/drawable-xhdpi/ic_launcher_monochrome.png b/android/app/src/main/res/drawable-xhdpi/ic_launcher_monochrome.png
new file mode 100644
index 0000000..cd8dc1b
Binary files /dev/null and b/android/app/src/main/res/drawable-xhdpi/ic_launcher_monochrome.png differ
diff --git a/android/app/src/main/res/drawable-xxhdpi/ic_launcher_background.png b/android/app/src/main/res/drawable-xxhdpi/ic_launcher_background.png
new file mode 100644
index 0000000..91e3d43
Binary files /dev/null and b/android/app/src/main/res/drawable-xxhdpi/ic_launcher_background.png differ
diff --git a/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png b/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..d6c08e1
Binary files /dev/null and b/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png differ
diff --git a/android/app/src/main/res/drawable-xxhdpi/ic_launcher_monochrome.png b/android/app/src/main/res/drawable-xxhdpi/ic_launcher_monochrome.png
new file mode 100644
index 0000000..df86c18
Binary files /dev/null and b/android/app/src/main/res/drawable-xxhdpi/ic_launcher_monochrome.png differ
diff --git a/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_background.png b/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_background.png
new file mode 100644
index 0000000..42d88ac
Binary files /dev/null and b/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_background.png differ
diff --git a/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png b/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..66bb099
Binary files /dev/null and b/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png differ
diff --git a/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_monochrome.png b/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_monochrome.png
new file mode 100644
index 0000000..8f70299
Binary files /dev/null and b/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_monochrome.png differ
diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..854fef6
--- /dev/null
+++ b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
index db77bb4..6431225 100644
Binary files a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
index 17987b7..144c1e6 100644
Binary files a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
index 09d4391..022cca9 100644
Binary files a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
index d5f1c8d..ebd3cdb 100644
Binary files a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
index 4d6372e..8ac516d 100644
Binary files a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/assets/blaster.svg b/assets/blaster.svg
new file mode 100644
index 0000000..f578cca
--- /dev/null
+++ b/assets/blaster.svg
@@ -0,0 +1,28 @@
+
+
+
+
diff --git a/assets/blaster_bg.png b/assets/blaster_bg.png
new file mode 100644
index 0000000..5503a0d
Binary files /dev/null and b/assets/blaster_bg.png differ
diff --git a/assets/blaster_fg.png b/assets/blaster_fg.png
new file mode 100644
index 0000000..368f234
Binary files /dev/null and b/assets/blaster_fg.png differ
diff --git a/assets/blaster_icon.png b/assets/blaster_icon.png
new file mode 100644
index 0000000..d8db2e8
Binary files /dev/null and b/assets/blaster_icon.png differ
diff --git a/assets/blaster_mono.png b/assets/blaster_mono.png
new file mode 100644
index 0000000..ba05833
Binary files /dev/null and b/assets/blaster_mono.png differ
diff --git a/lib/note_editor.dart b/lib/note_editor.dart
index 5431d1a..44f1dd9 100644
--- a/lib/note_editor.dart
+++ b/lib/note_editor.dart
@@ -3,8 +3,9 @@ import 'package:flutter/material.dart';
import 'package:flutter_code_editor/flutter_code_editor.dart';
import 'package:flutter_markdown/flutter_markdown.dart';
import 'package:flutter_markdown_latex/flutter_markdown_latex.dart';
+import 'package:flutter_svg/svg.dart';
import 'package:markdown/markdown.dart' as md;
-import 'package:path/path.dart' as path;
+import 'package:shared_preferences/shared_preferences.dart';
import 'themes/day.dart';
import 'themes/night.dart';
import 'themes/markdown.dart';
@@ -25,57 +26,102 @@ class NoteEditorScreen extends StatefulWidget {
}
class _NoteEditorScreenState extends State {
- bool isLoading = true;
- bool _isPreviewMode = false; // Default: Editing mode
late CodeController _controller;
- double _fontSize = 16.0; // Default font size
+ late String _initialContent;
+ bool _isPreviewMode = false;
+ bool _isLoading = true;
+ bool _autoSaveEnabled = false; // Controlled by user toggle
+ double _fontSize = 16.0;
@override
void initState() {
super.initState();
+ _loadPreferences();
_loadNoteContent();
}
+ Future _loadPreferences() async {
+ final prefs = await SharedPreferences.getInstance();
+ setState(() {
+ _autoSaveEnabled = prefs.getBool('auto_save_enabled') ?? false;
+ });
+ }
+
+ Future _setAutoSaveEnabled(bool value) async {
+ final prefs = await SharedPreferences.getInstance();
+ await prefs.setBool('auto_save_enabled', value);
+ setState(() {
+ _autoSaveEnabled = value;
+ });
+ }
+
Future _loadNoteContent() async {
- String content = "";
try {
- content = await widget.note.readAsString();
+ _initialContent = await widget.note.readAsString();
} catch (e) {
print("❌ Failed to read file: ${widget.note.path}");
+ _initialContent = "";
}
setState(() {
_controller = CodeController(
- text: content,
+ text: _initialContent,
language: markdown,
);
- _controller.addListener(_saveNote);
- _controller.popupController.enabled = false;
- isLoading = false;
+ _controller.addListener(_onTextChanged);
+ _isLoading = false;
});
}
+ void _onTextChanged() {
+ if (_autoSaveEnabled && _controller.text != _initialContent) {
+ _saveNote();
+ }
+ }
+
Future _saveNote() async {
try {
- final notesDirectory = widget.notesDirectoryPath ??
- widget.note.parent.path; // ✅ Use correct directory
+ if (_controller.text == _initialContent) return; // No change, skip saving
- // Get the full path of the original file, preserving subfolder structure
- final relativeNotePath = path.relative(widget.note.path, from: notesDirectory);
- final newFilePath = path.join(notesDirectory, relativeNotePath); // ✅ Preserve subfolder
+ await widget.note.writeAsString(_controller.text);
+ _initialContent = _controller.text; // Update initial state
- print("📝 Attempting to save note at: $newFilePath");
- final newFile = File(newFilePath);
- await newFile.writeAsString(_controller.text);
-
- print("✅ Successfully saved note at: $newFilePath");
- } catch (e, stackTrace) {
+ print("✅ Note saved successfully");
+ } catch (e) {
print("❌ Error saving note: ${widget.note.path}");
- print("⚠️ Exception: $e");
- print("🛠 Stack trace: $stackTrace");
}
}
+ Future _onWillPop() async {
+ if (_controller.text == _initialContent) return true; // No changes, exit
+
+ return await showDialog(
+ context: context,
+ builder: (context) => AlertDialog(
+ title: Text("Save Changes?"),
+ content: Text("You have unsaved changes. Save before exiting?"),
+ actions: [
+ TextButton(
+ onPressed: () => Navigator.of(context).pop(true), // Discard and exit
+ child: Text("Discard"),
+ ),
+ TextButton(
+ onPressed: () async {
+ await _saveNote();
+ Navigator.of(context).pop(true); // Save and exit
+ },
+ child: Text("Save"),
+ ),
+ TextButton(
+ onPressed: () => Navigator.of(context).pop(false), // Stay on page
+ child: Text("Cancel"),
+ ),
+ ],
+ ),
+ ) ??
+ false;
+ }
+
void _updateFontSize(double newSize) {
setState(() {
_fontSize = newSize;
@@ -84,138 +130,153 @@ class _NoteEditorScreenState extends State {
@override
void dispose() {
- _controller.removeListener(_saveNote);
+ _controller.removeListener(_onTextChanged);
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
- return Scaffold(
- appBar: AppBar(
- title: Text(widget.note.uri.pathSegments.last.replaceAll('.md', '')),
- actions: [
- Padding(
- padding: EdgeInsets.symmetric(horizontal: 15),
- child: PopupMenuButton(
- icon: Icon(Icons.radio_button_checked, color: Colors.orange),
- onSelected: (String value) {
- if (value == 'Toggle Preview') {
- setState(() {
- _isPreviewMode = !_isPreviewMode;
- });
- }
+ return WillPopScope(
+ onWillPop: _onWillPop,
+ child: Scaffold(
+ appBar: AppBar(
+ title: Text(widget.note.uri.pathSegments.last.replaceAll('.md', '')),
+ leading: IconButton(
+ icon: Icon(Icons.arrow_back),
+ onPressed: () async {
+ if (await _onWillPop()) {
+ Navigator.pop(context);
+ }
+ },
+ ),
+ actions: [
+ Padding(
+ padding: EdgeInsets.symmetric(horizontal: 15),
+ child: PopupMenuButton(
+ icon: SvgPicture.asset(
+ "assets/blaster.svg",
+ width: 30,
+ color: Colors.orange,
+ ),
+ onSelected: (String value) {
+ switch (value) {
+ case 'Save':
+ _saveNote();
+ break;
+ case 'Toggle Autosave':
+ _setAutoSaveEnabled(!_autoSaveEnabled);
+ break;
+ case 'Toggle Preview':
+ setState(() {
+ _isPreviewMode = !_isPreviewMode;
+ });
+ break;
+ }
+ },
+ itemBuilder: (BuildContext context) => [
+ PopupMenuItem(
+ value: 'Save',
+ child: ListTile(
+ leading: Icon(Icons.save),
+ title: Text("Save"),
+ ),
+ ),
+ PopupMenuItem(
+ value: 'Toggle Autosave',
+ child: ListTile(
+ leading: Icon(_autoSaveEnabled
+ ? Icons.toggle_on
+ : Icons.toggle_off),
+ title: Text(_autoSaveEnabled
+ ? "Disable Autosave"
+ : "Enable Autosave"),
+ ),
+ ),
+ PopupMenuItem(
+ value: 'Toggle Preview',
+ child: ListTile(
+ leading:
+ Icon(_isPreviewMode ? Icons.edit : Icons.preview),
+ title:
+ Text(_isPreviewMode ? "Edit Mode" : "Preview Mode"),
+ ),
+ ),
+ ],
+ ),
+ ),
+ ],
+ ),
+ body: _isLoading
+ ? Center(child: CircularProgressIndicator())
+ : _isPreviewMode
+ ? Padding(
+ padding: const EdgeInsets.all(16.0),
+ child: SingleChildScrollView(
+ child: MarkdownBody(
+ builders: {
+ 'latex': LatexElementBuilder(
+ textStyle: TextStyle(
+ color: widget.isDarkMode
+ ? Colors.white
+ : Colors.black)),
},
- itemBuilder: (BuildContext context) => [
- PopupMenuItem(
- value: 'Toggle Preview',
- child: ListTile(
- leading: Icon(_isPreviewMode ? Icons.edit : Icons.preview),
- title: Text(_isPreviewMode ? 'Edit Mode' : 'Preview Mode'),
- ),
- ),
- PopupMenuItem(
- enabled: false,
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Text('Font Size'),
- StatefulBuilder(
- builder: (context, setState) {
- return Slider(
- value: _fontSize,
- min: 12.0,
- max: 24.0,
- divisions: 6,
- label: _fontSize.toString(),
- onChanged: (newSize) {
- setState(() {
- _fontSize = newSize;
- });
- _updateFontSize(newSize);
- },
- );
- },
- ),
- ],
- ),
- ),
- ],
+ extensionSet: md.ExtensionSet(
+ [LatexBlockSyntax()],
+ [LatexInlineSyntax()],
+ ),
+ data: _controller.text,
+ selectable: true,
+ styleSheet: MarkdownStyleSheet(
+ p: TextStyle(
+ fontSize: _fontSize,
+ color: widget.isDarkMode
+ ? Colors.white
+ : Colors.black),
+ h1: TextStyle(
+ fontSize: _fontSize + 8,
+ color: widget.isDarkMode
+ ? Colors.white
+ : Colors.black,
+ fontWeight: FontWeight.bold),
+ h2: TextStyle(
+ fontSize: _fontSize + 6,
+ color: widget.isDarkMode
+ ? Colors.white
+ : Colors.black,
+ fontWeight: FontWeight.bold),
+ h3: TextStyle(
+ fontSize: _fontSize + 4,
+ color: widget.isDarkMode
+ ? Colors.white
+ : Colors.black,
+ fontWeight: FontWeight.bold),
+ code: TextStyle(
+ fontSize: _fontSize,
+ backgroundColor: Colors.transparent),
+ codeblockDecoration: BoxDecoration(
+ color: Colors.transparent),
+ ),
),
),
- ],
- ),
- body: isLoading
- ? Center(
- child:
- CircularProgressIndicator()) // Show loader while initializing
- : _isPreviewMode
- ? Padding(
- padding: const EdgeInsets.all(16.0),
- child: SingleChildScrollView(
- child: MarkdownBody(
- builders: {
- 'latex': LatexElementBuilder(
- textStyle: TextStyle(
- color: widget.isDarkMode
- ? Colors.white
- : Colors.black)),
- },
- extensionSet: md.ExtensionSet(
- [LatexBlockSyntax()],
- [LatexInlineSyntax()],
- ),
- data: _controller
- .text, // ✅ Plain Markdown without syntax highlighting
- selectable: true, // ✅ Allows text selection
- styleSheet: MarkdownStyleSheet(
- p: TextStyle(
- fontSize: _fontSize,
- color: widget.isDarkMode
- ? Colors.white
- : Colors.black),
- h1: TextStyle(
- fontSize: _fontSize + 8,
- color:
- widget.isDarkMode ? Colors.white : Colors.black,
- fontWeight: FontWeight.bold),
- h2: TextStyle(
- fontSize: _fontSize + 6,
- color:
- widget.isDarkMode ? Colors.white : Colors.black,
- fontWeight: FontWeight.bold),
- h3: TextStyle(
- fontSize: _fontSize + 4,
- color:
- widget.isDarkMode ? Colors.white : Colors.black,
- fontWeight: FontWeight.bold),
- code: TextStyle(
- fontSize: _fontSize,
- backgroundColor: Colors
- .transparent), // ✅ Disables syntax highlighting
- codeblockDecoration: BoxDecoration(
- color: Colors
- .transparent), // ✅ Removes background color from code blocks
- ),
- ),
- ),
- )
- : Padding(
- padding: const EdgeInsets.all(16.0),
- child: CodeTheme(
- data: CodeThemeData(
- styles: widget.isDarkMode ? nightTheme : dayTheme),
- child: SingleChildScrollView(
- child: WrappedCodeField(
- wrap: true,
- controller: _controller,
- textStyle: TextStyle(
- fontSize: _fontSize,
- ),
- ),
- ),
- ),
+ )
+ : Padding(
+ padding: const EdgeInsets.all(16.0),
+ child: CodeTheme(
+ data: CodeThemeData(
+ styles: widget.isDarkMode ? nightTheme : dayTheme),
+ child: SingleChildScrollView(
+ child: WrappedCodeField(
+ wrap: true,
+ controller: _controller,
+ textStyle: TextStyle(
+ fontSize: _fontSize,
),
+ ),
+ ),
+ ),
+ ),
+ ),
);
}
}
diff --git a/lib/note_list.dart b/lib/note_list.dart
index c276c44..295df10 100644
--- a/lib/note_list.dart
+++ b/lib/note_list.dart
@@ -1,6 +1,7 @@
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:file_picker/file_picker.dart';
+import 'package:flutter_svg/flutter_svg.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:open_filex/open_filex.dart';
import 'package:path/path.dart' as path;
@@ -396,6 +397,7 @@ class _NoteListScreenState extends State {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
+ duration: const Duration(seconds: 3),
content: Text('Note moved to trash'),
action: SnackBarAction(
label: 'Undo',
@@ -502,6 +504,7 @@ class _NoteListScreenState extends State {
autocorrect: false,
textInputAction: TextInputAction.done,
controller: searchController,
+ cursorColor: Colors.orange,
decoration: InputDecoration(
hintText: 'Search or enter a command...',
border: InputBorder.none,
@@ -521,8 +524,11 @@ class _NoteListScreenState extends State {
Padding(
padding: EdgeInsets.symmetric(horizontal: 15),
child: PopupMenuButton(
- icon: Icon(Icons.radio_button_checked,
- color: Colors.orange), // Menu button (⋮)
+ icon: SvgPicture.asset(
+ "assets/blaster.svg",
+ width: 30,
+ color: Colors.orange,
+ ),
onSelected: (String value) {
switch (value) {
case 'Toggle Tags':
diff --git a/pubspec.lock b/pubspec.lock
index c89ff32..fd9abfb 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -1,6 +1,14 @@
# Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile
packages:
+ archive:
+ dependency: transitive
+ description:
+ name: archive
+ sha256: "528579c7e4579719f04b21eeeeddfd73a18b31dabc22766893b7d1be7f49b967"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.0.3"
args:
dependency: transitive
description:
@@ -49,6 +57,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.4.0"
+ checked_yaml:
+ dependency: transitive
+ description:
+ name: checked_yaml
+ sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.3"
+ cli_util:
+ dependency: transitive
+ description:
+ name: cli_util
+ sha256: ff6785f7e9e3c38ac98b2fb035701789de90154024a75b6cb926445e83197d1c
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.4.2"
clock:
dependency: transitive
description:
@@ -150,6 +174,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.7.0"
+ flutter_launcher_icons:
+ dependency: "direct main"
+ description:
+ name: flutter_launcher_icons
+ sha256: bfa04787c85d80ecb3f8777bde5fc10c3de809240c48fa061a2c2bf15ea5211c
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.14.3"
flutter_lints:
dependency: "direct dev"
description:
@@ -191,7 +223,7 @@ packages:
source: hosted
version: "2.0.24"
flutter_svg:
- dependency: transitive
+ dependency: "direct main"
description:
name: flutter_svg
sha256: c200fd79c918a40c5cd50ea0877fa13f81bdaf6f0a5d3dbcc2a13e3285d6aa1b
@@ -248,6 +280,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "4.1.2"
+ image:
+ dependency: transitive
+ description:
+ name: image
+ sha256: "13d3349ace88f12f4a0d175eb5c12dcdd39d35c4c109a8a13dfeb6d0bd9e31c3"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.5.3"
+ json_annotation:
+ dependency: transitive
+ description:
+ name: json_annotation
+ sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.9.0"
leak_tracker:
dependency: transitive
description:
@@ -480,6 +528,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.1.8"
+ posix:
+ dependency: transitive
+ description:
+ name: posix
+ sha256: a0117dc2167805aa9125b82eee515cc891819bac2f538c83646d355b16f58b9a
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.0.1"
provider:
dependency: transitive
description:
@@ -757,6 +813,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "6.5.0"
+ yaml:
+ dependency: transitive
+ description:
+ name: yaml
+ sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.1.3"
sdks:
dart: ">=3.6.0 <4.0.0"
flutter: ">=3.27.0"
diff --git a/pubspec.yaml b/pubspec.yaml
index a8d1a00..f8fbc7b 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,38 +1,14 @@
name: muzzlevelocity
description: "A new Flutter project."
-# 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.6.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
-
- # The following adds the Cupertino Icons font to your application.
- # Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.8
file_picker: ^9.0.0
flutter_highlight: ^0.7.0
@@ -47,56 +23,22 @@ dependencies:
shared_preferences: ^2.5.2
highlight: ^0.7.0
open_filex: ^4.6.0
+ flutter_svg: ^2.0.17
+ flutter_launcher_icons: ^0.14.3
dev_dependencies:
flutter_test:
sdk: flutter
-
- # 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
+ assets:
+ - assets/
- # 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
+flutter_launcher_icons:
+ android: true
+ image_path: "assets/blaster_icon.png"
+ adaptive_icon_background: "assets/blaster_bg.png"
+ adaptive_icon_foreground: "assets/blaster_fg.png"
+ adaptive_icon_monochrome: "assets/blaster_mono.png"
\ No newline at end of file