Flutter - different asset path in package's example when building - flutter

When creating a custom package that contains font as a .ttf file. I try to download the font file also in the example app that is contained in the package.
The font is downloaded successfully on iOS and macOS apps but not on Linux or Web.
The web console is giving me an error
Failed to load font My-Custom-Icons at assets/../lib/assets/fonts/My-Custom-Icons.ttf
...
my_package:
# When depending on this package from a real application you should use:
# custom_package: ^x.y.z
# See https://dart.dev/tools/pub/dependencies#version-constraints
# The example app is bundled with the plugin so we use a path dependency on
# the parent directory to use the current plugin's version.
path: ../
...
flutter:
uses-material-design: true
fonts:
- family: My-Custom-Icons
fonts:
- asset: ../lib/assets/fonts/My-Custom-Icons.ttf
I would expect that font would be downloaded the same way on all different platforms. What I'm missing here?

Hi just replace this and try.
- asset: assets/fonts/My-Custom-Icons.ttf

Ah, it seems that you can use the packages path when importing the font even inside the example. So the following did the work.
...
my_package:
# When depending on this package from a real application you should use:
# custom_package: ^x.y.z
# See https://dart.dev/tools/pub/dependencies#version-constraints
# The example app is bundled with the plugin so we use a path dependency on
# the parent directory to use the current plugin's version.
path: ../
...
flutter:
uses-material-design: true
fonts:
- family: My-Custom-Icons
fonts:
- asset: packages/my_package/assets/fonts/My-Custom-Icons.ttf

Related

Export fonts from a package - Flutter

Page URL: [https://flutter.dev/docs/cookbook/design/package-fonts.html][1]
Page source: [https://github.com/flutter/website/tree/master/src/docs/cookbook/design/package-fonts.md][1]
Description of issue:
I've been trying to replicate the project Export fonts from a package from the Flutter.dev cookbook page. But I'm getting lost in the instructions. The instructions indicate that :
To export a font from a package, you need to import the font files into the lib folder of the package project.
The instructions also say that (I quote)
assume you’ve got a Flutter library called awesome_package with fonts living in a lib/fonts folder.
And the awesome_package package/library folder structure is defined as follow
awesome_package/
lib/
awesome_package.dart
fonts/
Raleway-Regular.ttf
Raleway-Italic.ttf
My question is : How do I create the awesome_package. Do I necessarily need to publish the package on the pub.dev ?
Please help me out
How do I create the awesome_package.
See more about Flutter packages and plugins
Do I necessarily need to publish the package on the pub.dev ?
No, you can use the package locally.
If you just want to use differents fonts, don't create a package for this, use this package google_fonts
Or you can use your own font
Docs
flutter:
fonts:
- family: font_name
fonts:
- asset: fonts/font_name1.ttf
- asset: fonts/font_name1.ttf

using Adobe fonts with Flutter project

I am working in a Flutter project and I want to use the following Adobe fonts, how can I do that?
https://fonts.adobe.com/fonts/myriad
https://fonts.adobe.com/fonts/myriad-arabic
You need to download this fonts and place it to assets/fonts folder at the root of your project. Next, add fonts to your pubspec.yaml file. For example:
flutter:
fonts:
- family: FontFamily
fonts:
- asset: fonts/FontFamily-Regular.ttf
style: regular
You can find more information in Official Documentation.

Flutter - No file or variants found for asset: lib/assets/images

I'm getting this error while adding images folder assets in pubspec.yaml
Error detected in pubspec.yaml:
No file or variants found for asset: lib/assets/images.
This is how my pubspec.yaml file looks like
flutter:
uses-material-design: true
assets:
- lib/assets/images
fonts:
- family: Potra
fonts:
- asset: lib/assets/fonts/Potra.ttf
- family: BAHNSCHRIFT
fonts:
- asset: lib/assets/fonts/BAHNSCHRIFT.TTF
I tried to look it up. Most of the people are suggesting to give the right indentation for this problem. But I'm quite sure it is not the case here. I tried the proper indentation method and also all possible variants but in vain.
When I remove below part, code runs fine without any error and respective added font family in pubspec also works fine.
assets:
- lib/assets/images
Why I'm getting error after adding assets part?
This is how my file structure looks like
Your code doesn't work because you need to add one more slash, so it should be like:
assets:
- lib/assets/images/
Tips: It's kinda bad practice if you put your assets folder inside your lib folder. Try to place it outside the lib folder. And also make sure the indentations are correct.
I hope it will be helpful.
You should have your assets folder not inside lib folder but in the main root directory( i.e. out of lib ) and then add assets as :
assets:
# For images
- assets/images
fonts:
- family: FontFamilyName
fonts:
- asset: assets/fonts/the_font_you_want.ttf
And beware of indentation in pubspec.yaml, they also cause errors
I got this exception for a silly mistake I have space in my file name like home_cover. jpg. So I remove it like home_cover.jpg

Flutter: Unimplemented handling of missing static target

I am running my first Flutter project
I created a sample project and I was able to run the app in
simulator
I have edited the file main.dart
main.dart
import 'package:flutter/material.dart';
void main() => runApp(MaterialApp(home: Text('Hello World')));
Now I am getting the error :
pubspec.yaml
name: flutter_app
description: A new Flutter application.
# 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 used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 1.0.0+1
environment:
sdk: ">=2.1.0 <3.0.0"
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: ^0.1.2
dev_dependencies:
flutter_test:
sdk: flutter
# 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.
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/assets-and-images/#resolution-aware.
# For details regarding adding assets from package dependencies, see
# https://flutter.dev/assets-and-images/#from-packages
# 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/custom-fonts/#from-packages
The same error occurred for me at first ... but it worked when I did a 'hot restart'
Just compile the project again and it will work. The error occurs because static variables are hard compiled on the executable and are not dynamic. If you hot reload the changes, it will not rebuild the executable (apk), so that's why you need to rebuild the app.
Your code works for me...
Have you tried a hot restart? The shortcut is CTRL+SHIFT+\ or just click the button with the green circle-arrow in the console-window
I'm not sure what that error is, since I can't replicate it. However, this is more like what your app should look like. Give this a shot and see if it works.
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
#override
Widget build(BuildContext context) {
return MaterialApp(
home: Text('Hello World'),
);
}
}
Just delete the build and recompile. It worked for me. Use the following code:
flutter clean
flutter run
Usually, a Full App Restart is required after a heavy logic change, as transforming a StatelessWidget into StatefulWidget. Check André Glatzl answer
In Android Studio use the Flutter Hot Restart
A hot restart will work. But the source of the problem might be as follows.
You've created new project. You've deleted boilerplate code and try to modify without a stateful or stateless widget. Flutter tries to rebuild widgets under build() method. But when you hot reload, flutter might not resolve what you've updated.
Another example of such error is, when we create a new static variable(static String token = "abc";) in one Class (like constants.dart) and try to reference them in another screen (constants.token), flutter failed to resolve such static things when we hotreload. but it work fine when we hotrestart.
One of the reasons this happens is you are running the app for the first time and then you make some changes and reload again. Without reloading, stop the execution, and again run the app from scratch, this error won't come.
I also faced the same situation, I fixed it by running the app again, This issue is caused when you applied a lot of change to your code and pressed the hot reload button.
Restarting the app worked in my case.
Run this command again
'flutter run'
should work
You changed the myApp and created your own MaterialApp so all you have to do is after changing the name into MaterialApp instead of hot restart click the play button. It will work.
Thanks
Just press the red stop button and click the play button again. It will work :)
As other answers mention, you can 'hot reload' or rebuild your app to solve this issue.
But the reason why I got this error, was that I have edited the pubspec.yaml file, when editing the pubspec.yaml file, you should stop and rebuild the entire app.
Navigate to your lib folder where your main.dart file is and run the commands below:
PS C:\Users\mobile_app\lib> flutter clean
PS C:\Users\mobile_app\lib> flutter pub get
PS C:\Users\mobile_app\lib> flutter run
although if you are having null safety issues I would prefer you debug your application first. In my encounters this error is of a result of trying to run a class component outside a the Static Widget with context hence the class is loaded before build time making the application fail to start.
I occurred when I was implementing TextEditingController and there after I created a function which has parameter inside, so when I wrote the addListener for the controller, then below error got occurred,
Unimplemented handling of missing static target flutter
but after removing the argument from the addListener function still the issue persists and which broked my application, even I did the hot reload in my Android Studio.
Solution:
Mostly similar to above said, but little different, I terminated my app, and rerun the app, and which fixed the issue.
Hope this would help manyone.
If you have added Hot Reloading extension then exit and try restarting the HOt Reloading.
It should work.
Check your import.
It should be
import 'package:your_app...' not import 'file://C/path/your_app/

Flutter - Custom Font not displaying

This is an excerpt of my pubspec.yaml file:
flutter:
uses-material-design: true
fonts:
- family: Coiny
fonts:
- asset: fonts/Coiny-Regular.ttf
I am trying to use the font called "Coiny" from the Google Fonts page. I created a fonts folder inside my root directory and put it in there.
In my code, I do this:
new Text("Testtext", style: new TextStyle(fontFamily: "Coiny")),
But it has no effect. I have encountered a similar problem in the past with the Barrio font. But it seemed to work after some time, which is not the case with this one.
You might want to try removing the app from the device and reinstalling it. Depending on how you're launching, it might not be writing over the old install file.
I had font: not right under flutter:. I moved the font: section right under flutter: , and worked.
flutter:
fonts:
- family: Test
fonts:
- asset: assets/fonts/Font-Test.ttf
I had the same issue. If you're testing via an emulator, you just need to stop and restart it. Via VSCode you can just stop the run process (Red square in the top right) and then run -> Run without debugging or Start Debugging
Whenever you make changes to pubspec.yaml file, it is always a good idea to stop the ongoing dart process from your IDE and do a full restart.
If you do hot reload or hot restart, engine may not be able to fetch the newly added data to your file. If nothing works, you should use #Collin answer, uninstall and reinstall the app.
Font declaration alignment is not as per flutter pubspec.yaml. It should be like below.
fonts:
- family: Coiny
fonts:
- asset: fonts/Coiny-Regular.ttf
You can check out it here.
Just Uninstall previous flutter app apk from your android device and again run application. This will resolve your problem. If this not working then clear device cache and try again.
You have add new files in the app therefore you have to
close the running device and then restart the emulator.
-stop a running emulator
-run a emulator
It works in my case.
I had an issue with the font and was receiving these two warnings:
Warning: No fonts specified for font [font family name]
Warning: Missing family name for font.
The issue was that I had the pubspec.yaml fonts section typed incorrectly.
Make sure your pubspec.yaml looks like this:
flutter:
fonts:
- family: FontFamily
fonts:
- asset: fonts/Font-Medium.ttf
uses-material-design: true
You will then need to flutter clean and then flutter pub get. If all of this fails, try to uninstall the app and then reinstall it again (as Collin states above) after doing the above.
I had a "-" next to the nested fonts declaration, which was causing those errors (and the font not to work).
In my case the font asset files were corrupted. Try installing them on your local machine first. If it gives you an error then they are corrupted.
I also encountered this issue, after setting the font B, it not showing correctly.
But the issue for me was I made an empty line between two font-family, like below
fonts:
- family: A
fonts:
- asset: assets/fonts/A-Regular.ttf
- family: B
fonts:
- asset: assets/fonts/B-Regular.ttf
remove the empty line between two font families, This was the working solution for me and remember YAML is INDENTATION sensitive
I tried everything but the changes in pubspec.yaml just did not make any difference. I then created a new project. copied font files to respective folder, made all changes to pubspec.yaml, pasted code into my main.dart file. I ensured everything was in place and then ran project in simulator and viola all fonts appeared in full glory.
I had the other reason. Consider removing spaces from family name. For example, use "MavenPro" instead of "Maven Pro".
Also check you put fonts section into flutter section.
Idek, sometimes I've found you need to totally kill your simulator or device and re-install to get some fonts to work.
I've also found that some font just refuse to work.
Try a different font to to confirm your sanity that your pubspec and TextThemes are actually correct with known working font.
set in pubspec.yaml
fonts:
- family: Montserrat
fonts:
- asset: assets/fonts/Montserrat-Regular.ttf
- asset: assets/fonts/Montserrat-Bold.ttf
and then make sure that clean and build
1. Check the indentation. Every sub-property has 2 spaces from the left. Don't use tab spaces.
2. Stop the dart file execution and try to cold boot the emulator.
3. Try doing a hot restart.
Refer to this YouTube Tutorial.