app icons

This commit is contained in:
randogoth 2025-02-22 19:11:10 +02:00
parent be43333da6
commit 4fcd6db6fd
30 changed files with 331 additions and 216 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 552 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 724 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View file

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background"/>
<foreground>
<inset
android:drawable="@drawable/ic_launcher_foreground"
android:inset="16%" />
</foreground>
<monochrome>
<inset
android:drawable="@drawable/ic_launcher_monochrome"
android:inset="16%" />
</monochrome>
</adaptive-icon>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 544 B

After

Width:  |  Height:  |  Size: 1.8 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 442 B

After

Width:  |  Height:  |  Size: 1.2 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 721 B

After

Width:  |  Height:  |  Size: 2.4 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 5 KiB

Before After
Before After

28
assets/blaster.svg Normal file
View file

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg
fill="#000000"
height="800"
width="800"
version="1.1"
id="Layer_1"
viewBox="0 0 512 512"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs2" />
<g
id="g2"
transform="matrix(-1,0,0,1,512,0)"
style="fill:#ffffff">
<g
id="g1"
style="fill:#ffffff">
<path
d="m 466.824,173.176 v -30.118 c 0,-12.475 -10.114,-22.588 -22.588,-22.588 -12.474,0 -22.588,10.114 -22.588,22.588 0,-12.475 -10.114,-22.588 -22.588,-22.588 -12.474,0 -22.588,10.114 -22.588,22.588 0,-12.475 -10.114,-22.588 -22.588,-22.588 -9.83,0 -18.17,6.292 -21.275,15.059 H 90.353 V 90.353 H 45.176 v 45.176 L 0,173.176 v 45.177 l 90.353,97.879 -45.177,30.121 v 75.294 h 90.353 l 43.4,-119.35 30.068,30.068 31.944,-31.944 L 196.522,256 h 136.085 c 3.105,8.767 11.445,15.059 21.275,15.059 12.475,0 22.588,-10.114 22.588,-22.588 0,12.475 10.113,22.588 22.588,22.588 12.475,0 22.588,-10.114 22.588,-22.588 0,12.475 10.113,22.588 22.588,22.588 12.475,0 22.588,-10.114 22.588,-22.588 V 218.353 H 512 V 173.176 Z M 195.765,218.353 H 90.353 v -45.177 h 105.412 z"
id="path1"
style="fill:#ffffff" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
assets/blaster_bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 B

BIN
assets/blaster_fg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
assets/blaster_icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
assets/blaster_mono.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View file

@ -3,8 +3,9 @@ import 'package:flutter/material.dart';
import 'package:flutter_code_editor/flutter_code_editor.dart'; import 'package:flutter_code_editor/flutter_code_editor.dart';
import 'package:flutter_markdown/flutter_markdown.dart'; import 'package:flutter_markdown/flutter_markdown.dart';
import 'package:flutter_markdown_latex/flutter_markdown_latex.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: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/day.dart';
import 'themes/night.dart'; import 'themes/night.dart';
import 'themes/markdown.dart'; import 'themes/markdown.dart';
@ -25,57 +26,102 @@ class NoteEditorScreen extends StatefulWidget {
} }
class _NoteEditorScreenState extends State<NoteEditorScreen> { class _NoteEditorScreenState extends State<NoteEditorScreen> {
bool isLoading = true;
bool _isPreviewMode = false; // Default: Editing mode
late CodeController _controller; 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 @override
void initState() { void initState() {
super.initState(); super.initState();
_loadPreferences();
_loadNoteContent(); _loadNoteContent();
} }
Future<void> _loadPreferences() async {
final prefs = await SharedPreferences.getInstance();
setState(() {
_autoSaveEnabled = prefs.getBool('auto_save_enabled') ?? false;
});
}
Future<void> _setAutoSaveEnabled(bool value) async {
final prefs = await SharedPreferences.getInstance();
await prefs.setBool('auto_save_enabled', value);
setState(() {
_autoSaveEnabled = value;
});
}
Future<void> _loadNoteContent() async { Future<void> _loadNoteContent() async {
String content = "";
try { try {
content = await widget.note.readAsString(); _initialContent = await widget.note.readAsString();
} catch (e) { } catch (e) {
print("❌ Failed to read file: ${widget.note.path}"); print("❌ Failed to read file: ${widget.note.path}");
_initialContent = "";
} }
setState(() { setState(() {
_controller = CodeController( _controller = CodeController(
text: content, text: _initialContent,
language: markdown, language: markdown,
); );
_controller.addListener(_saveNote); _controller.addListener(_onTextChanged);
_controller.popupController.enabled = false; _isLoading = false;
isLoading = false;
}); });
} }
void _onTextChanged() {
if (_autoSaveEnabled && _controller.text != _initialContent) {
_saveNote();
}
}
Future<void> _saveNote() async { Future<void> _saveNote() async {
try { try {
final notesDirectory = widget.notesDirectoryPath ?? if (_controller.text == _initialContent) return; // No change, skip saving
widget.note.parent.path; // Use correct directory
// Get the full path of the original file, preserving subfolder structure await widget.note.writeAsString(_controller.text);
final relativeNotePath = path.relative(widget.note.path, from: notesDirectory); _initialContent = _controller.text; // Update initial state
final newFilePath = path.join(notesDirectory, relativeNotePath); // Preserve subfolder
print("📝 Attempting to save note at: $newFilePath"); print("✅ Note saved successfully");
final newFile = File(newFilePath); } catch (e) {
await newFile.writeAsString(_controller.text);
print("✅ Successfully saved note at: $newFilePath");
} catch (e, stackTrace) {
print("❌ Error saving note: ${widget.note.path}"); print("❌ Error saving note: ${widget.note.path}");
print("⚠️ Exception: $e");
print("🛠 Stack trace: $stackTrace");
} }
} }
Future<bool> _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) { void _updateFontSize(double newSize) {
setState(() { setState(() {
_fontSize = newSize; _fontSize = newSize;
@ -84,60 +130,76 @@ class _NoteEditorScreenState extends State<NoteEditorScreen> {
@override @override
void dispose() { void dispose() {
_controller.removeListener(_saveNote); _controller.removeListener(_onTextChanged);
_controller.dispose(); _controller.dispose();
super.dispose(); super.dispose();
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return WillPopScope(
onWillPop: _onWillPop,
child: Scaffold(
appBar: AppBar( appBar: AppBar(
title: Text(widget.note.uri.pathSegments.last.replaceAll('.md', '')), 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: [ actions: [
Padding( Padding(
padding: EdgeInsets.symmetric(horizontal: 15), padding: EdgeInsets.symmetric(horizontal: 15),
child: PopupMenuButton<String>( child: PopupMenuButton<String>(
icon: Icon(Icons.radio_button_checked, color: Colors.orange), icon: SvgPicture.asset(
"assets/blaster.svg",
width: 30,
color: Colors.orange,
),
onSelected: (String value) { onSelected: (String value) {
if (value == 'Toggle Preview') { switch (value) {
case 'Save':
_saveNote();
break;
case 'Toggle Autosave':
_setAutoSaveEnabled(!_autoSaveEnabled);
break;
case 'Toggle Preview':
setState(() { setState(() {
_isPreviewMode = !_isPreviewMode; _isPreviewMode = !_isPreviewMode;
}); });
break;
} }
}, },
itemBuilder: (BuildContext context) => [ itemBuilder: (BuildContext context) => [
PopupMenuItem<String>( PopupMenuItem<String>(
value: 'Toggle Preview', value: 'Save',
child: ListTile( child: ListTile(
leading: Icon(_isPreviewMode ? Icons.edit : Icons.preview), leading: Icon(Icons.save),
title: Text(_isPreviewMode ? 'Edit Mode' : 'Preview Mode'), title: Text("Save"),
), ),
), ),
PopupMenuItem<String>( PopupMenuItem<String>(
enabled: false, value: 'Toggle Autosave',
child: Column( child: ListTile(
crossAxisAlignment: CrossAxisAlignment.start, leading: Icon(_autoSaveEnabled
children: [ ? Icons.toggle_on
Text('Font Size'), : Icons.toggle_off),
StatefulBuilder( title: Text(_autoSaveEnabled
builder: (context, setState) { ? "Disable Autosave"
return Slider( : "Enable Autosave"),
value: _fontSize,
min: 12.0,
max: 24.0,
divisions: 6,
label: _fontSize.toString(),
onChanged: (newSize) {
setState(() {
_fontSize = newSize;
});
_updateFontSize(newSize);
},
);
},
), ),
], ),
PopupMenuItem<String>(
value: 'Toggle Preview',
child: ListTile(
leading:
Icon(_isPreviewMode ? Icons.edit : Icons.preview),
title:
Text(_isPreviewMode ? "Edit Mode" : "Preview Mode"),
), ),
), ),
], ],
@ -145,10 +207,8 @@ class _NoteEditorScreenState extends State<NoteEditorScreen> {
), ),
], ],
), ),
body: isLoading body: _isLoading
? Center( ? Center(child: CircularProgressIndicator())
child:
CircularProgressIndicator()) // Show loader while initializing
: _isPreviewMode : _isPreviewMode
? Padding( ? Padding(
padding: const EdgeInsets.all(16.0), padding: const EdgeInsets.all(16.0),
@ -165,9 +225,8 @@ class _NoteEditorScreenState extends State<NoteEditorScreen> {
[LatexBlockSyntax()], [LatexBlockSyntax()],
[LatexInlineSyntax()], [LatexInlineSyntax()],
), ),
data: _controller data: _controller.text,
.text, // Plain Markdown without syntax highlighting selectable: true,
selectable: true, // Allows text selection
styleSheet: MarkdownStyleSheet( styleSheet: MarkdownStyleSheet(
p: TextStyle( p: TextStyle(
fontSize: _fontSize, fontSize: _fontSize,
@ -176,26 +235,27 @@ class _NoteEditorScreenState extends State<NoteEditorScreen> {
: Colors.black), : Colors.black),
h1: TextStyle( h1: TextStyle(
fontSize: _fontSize + 8, fontSize: _fontSize + 8,
color: color: widget.isDarkMode
widget.isDarkMode ? Colors.white : Colors.black, ? Colors.white
: Colors.black,
fontWeight: FontWeight.bold), fontWeight: FontWeight.bold),
h2: TextStyle( h2: TextStyle(
fontSize: _fontSize + 6, fontSize: _fontSize + 6,
color: color: widget.isDarkMode
widget.isDarkMode ? Colors.white : Colors.black, ? Colors.white
: Colors.black,
fontWeight: FontWeight.bold), fontWeight: FontWeight.bold),
h3: TextStyle( h3: TextStyle(
fontSize: _fontSize + 4, fontSize: _fontSize + 4,
color: color: widget.isDarkMode
widget.isDarkMode ? Colors.white : Colors.black, ? Colors.white
: Colors.black,
fontWeight: FontWeight.bold), fontWeight: FontWeight.bold),
code: TextStyle( code: TextStyle(
fontSize: _fontSize, fontSize: _fontSize,
backgroundColor: Colors backgroundColor: Colors.transparent),
.transparent), // Disables syntax highlighting
codeblockDecoration: BoxDecoration( codeblockDecoration: BoxDecoration(
color: Colors color: Colors.transparent),
.transparent), // Removes background color from code blocks
), ),
), ),
), ),
@ -216,6 +276,7 @@ class _NoteEditorScreenState extends State<NoteEditorScreen> {
), ),
), ),
), ),
),
); );
} }
} }

View file

@ -1,6 +1,7 @@
import 'dart:io'; import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:file_picker/file_picker.dart'; import 'package:file_picker/file_picker.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'package:open_filex/open_filex.dart'; import 'package:open_filex/open_filex.dart';
import 'package:path/path.dart' as path; import 'package:path/path.dart' as path;
@ -396,6 +397,7 @@ class _NoteListScreenState extends State<NoteListScreen> {
ScaffoldMessenger.of(context).showSnackBar( ScaffoldMessenger.of(context).showSnackBar(
SnackBar( SnackBar(
duration: const Duration(seconds: 3),
content: Text('Note moved to trash'), content: Text('Note moved to trash'),
action: SnackBarAction( action: SnackBarAction(
label: 'Undo', label: 'Undo',
@ -502,6 +504,7 @@ class _NoteListScreenState extends State<NoteListScreen> {
autocorrect: false, autocorrect: false,
textInputAction: TextInputAction.done, textInputAction: TextInputAction.done,
controller: searchController, controller: searchController,
cursorColor: Colors.orange,
decoration: InputDecoration( decoration: InputDecoration(
hintText: 'Search or enter a command...', hintText: 'Search or enter a command...',
border: InputBorder.none, border: InputBorder.none,
@ -521,8 +524,11 @@ class _NoteListScreenState extends State<NoteListScreen> {
Padding( Padding(
padding: EdgeInsets.symmetric(horizontal: 15), padding: EdgeInsets.symmetric(horizontal: 15),
child: PopupMenuButton<String>( child: PopupMenuButton<String>(
icon: Icon(Icons.radio_button_checked, icon: SvgPicture.asset(
color: Colors.orange), // Menu button () "assets/blaster.svg",
width: 30,
color: Colors.orange,
),
onSelected: (String value) { onSelected: (String value) {
switch (value) { switch (value) {
case 'Toggle Tags': case 'Toggle Tags':

View file

@ -1,6 +1,14 @@
# Generated by pub # Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile # See https://dart.dev/tools/pub/glossary#lockfile
packages: packages:
archive:
dependency: transitive
description:
name: archive
sha256: "528579c7e4579719f04b21eeeeddfd73a18b31dabc22766893b7d1be7f49b967"
url: "https://pub.dev"
source: hosted
version: "4.0.3"
args: args:
dependency: transitive dependency: transitive
description: description:
@ -49,6 +57,22 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.4.0" 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: clock:
dependency: transitive dependency: transitive
description: description:
@ -150,6 +174,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.7.0" 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: flutter_lints:
dependency: "direct dev" dependency: "direct dev"
description: description:
@ -191,7 +223,7 @@ packages:
source: hosted source: hosted
version: "2.0.24" version: "2.0.24"
flutter_svg: flutter_svg:
dependency: transitive dependency: "direct main"
description: description:
name: flutter_svg name: flutter_svg
sha256: c200fd79c918a40c5cd50ea0877fa13f81bdaf6f0a5d3dbcc2a13e3285d6aa1b sha256: c200fd79c918a40c5cd50ea0877fa13f81bdaf6f0a5d3dbcc2a13e3285d6aa1b
@ -248,6 +280,22 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.1.2" 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: leak_tracker:
dependency: transitive dependency: transitive
description: description:
@ -480,6 +528,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.1.8" version: "2.1.8"
posix:
dependency: transitive
description:
name: posix
sha256: a0117dc2167805aa9125b82eee515cc891819bac2f538c83646d355b16f58b9a
url: "https://pub.dev"
source: hosted
version: "6.0.1"
provider: provider:
dependency: transitive dependency: transitive
description: description:
@ -757,6 +813,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "6.5.0" version: "6.5.0"
yaml:
dependency: transitive
description:
name: yaml
sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce
url: "https://pub.dev"
source: hosted
version: "3.1.3"
sdks: sdks:
dart: ">=3.6.0 <4.0.0" dart: ">=3.6.0 <4.0.0"
flutter: ">=3.27.0" flutter: ">=3.27.0"

View file

@ -1,38 +1,14 @@
name: muzzlevelocity name: muzzlevelocity
description: "A new Flutter project." 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 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 version: 1.0.0+1
environment: environment:
sdk: ^3.6.0 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: dependencies:
flutter: flutter:
sdk: 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 cupertino_icons: ^1.0.8
file_picker: ^9.0.0 file_picker: ^9.0.0
flutter_highlight: ^0.7.0 flutter_highlight: ^0.7.0
@ -47,56 +23,22 @@ dependencies:
shared_preferences: ^2.5.2 shared_preferences: ^2.5.2
highlight: ^0.7.0 highlight: ^0.7.0
open_filex: ^4.6.0 open_filex: ^4.6.0
flutter_svg: ^2.0.17
flutter_launcher_icons: ^0.14.3
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:
sdk: flutter 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 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: 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 uses-material-design: true
assets:
- assets/
# To add assets to your application, add an assets section, like this: flutter_launcher_icons:
# assets: android: true
# - images/a_dot_burr.jpeg image_path: "assets/blaster_icon.png"
# - images/a_dot_ham.jpeg adaptive_icon_background: "assets/blaster_bg.png"
adaptive_icon_foreground: "assets/blaster_fg.png"
# An image asset can refer to one or more resolution-specific "variants", see adaptive_icon_monochrome: "assets/blaster_mono.png"
# 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