I modified the plugin dropdown_formfield and gave the name dropdown_formfield-hijacked.dart. Now I cant give a path to my dependency. it is located at the same level pubspec.yaml in my app.
dependencies:
dropdown-formfield:
path: 'what is the path'?
Typically, you might have a folder called projects where you keep your source.
You might have two projects:
/projects/some_project
/projects/dropdown_formfield
In the former, you refer to the latter as:
dropdown_formfield
path: ../dropdown_formfield
Related
I want my app to be available for the web.
I run this command: flutter create .
I get this error: "Fredi" is not a valid Dart package name.
I know that there shouldn't be any capital letters. However, I do not know how to change the dart package name.
I have already used these packages successfully, but they seem to be changing other things, not the Dart Package Name.
change_app_package_name: ^1.1.0
rename: ^2.0.1
The only thing in my project with the name 'Fredi' is the root folder (original project name). However, I don't know how to change it (file explorer won't let me) and it will probably break things.
What step can I take?
Config Files
app/build.gradle -> applicationId "com.tomasward.fredi"
android manifest -> package="com.tomasward.fredi"
android manifest -> android:label="Fredi"> [I understand this is the name displayed to the user, I've tried changing it but it doesn't fix the error.]
You can run flutter create --project-name "your_valid_package_name" InvalidPackageNameDirectory to create a Flutter project in a directory with a non-valid package name.
In an already existing project, you can change the package name by modifying the name property in the pubspec.yaml at the root of the project (see here for more details on the pubspec).
You can probably rename your package name with the help of some dependency that you can find on pub.dev by typing "rename" in the search bar.
All those dependencies will help you rename your package to a lowercase only package name, then you will be able to use the flutter create . command to create the web folder for your app.
I'm working on one project for some time now on flutter. Part of the source code has been designed so that it can be used again as is in other projects.
I'm working with Visual Studio Code.
Now I'm creating a second project. I'd like to organize folders this way:
Parent folder
Project1 folder
Project2 folder
my_library
Is it possible to add the library folder to the projects, as it is not inside their respective folders?
In pubspec.yaml of project 1, refer to the library as:
dependencies:
my_library:
path: ../my_library
The way to solve this isn't straightforward for beginners. So I summed up the proposed solutions here (I provide the names out of fairness, and follow related potential discussions below each one).
From Richard Heap:
In pubspec.yaml of project 1, refer to the library as:
dependencies:
my_library:
path: ../my_library
From me:
In ../my_library, add a specific pubspec.yaml. Something like:
name: my_libraries
description: my own common libraries
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
version: 1.0.0+1
environment:
sdk: ">=2.17.1 <3.0.0"
dependencies:
flutter:
sdk: flutter
From me:
Drag and drop (maybe there's a menu) your my_libraries folder from a file explorer to the VSCODE Explorer panel, and choose "add folder to workspace". Of course, all dependencies to external libraries used in my_libraries must be specified in its own pub_spec.yaml file.
Remarks:
I added source files in my_libraries/lib/. Don't know if the lib sub-directory is mandatory. Didn't take time to test without, and I like better to keep the same structure in my_libraries than in projects.
in project (and my_library) source files, to import my_library source files, just do as:
import 'package/my_library/xxx.dart'
where xxx.dart is the file to import.
is it possible to use different pubspec.yaml in different environmnet? for example, in develop environment I use the dependencies from local folder, and config the local folder in the pubspec.yaml like this:
dependencies:
info:
path: ../common/info
in production environment I use the dependencies like this:
dependencies:
info: 1.0.0
is it possible to do like that? I do not want to change the pubspec.yaml every time. I have read the solution from here https://github.com/flutter/flutter/issues/45769 but I am not sure it is the proper way.
I have project structure
-core_data
-core_domain
-core_ui
-core_launcher
The dependency of these 4 projects is
core_launcher -> core_ui -> core_domain -> core_data
4 projects are located in the same directory and I include one to another via pubspec.yaml file (for example core_launcher/pubspec.yaml):
dependencies:
flutter:
sdk: flutter
core_ui:
path: ../core_ui
The same thing I do with all projects to make dependency hierarchy.
The problem is that I can import all files from core_ui subproject when I'm currently editing some file in core_launcher but VSCode doesn't see any classes from his parents
(core_domain & core_data).
However, I can input import 'blah-blah-blah manually and VSCode see this class and import works well, but I can't do that with hit Alt+Enter that I do for fast-import.
So, I'm wondering why autocomplete is not working for inherited libraries.
Somebody had the same issue?
Code completion will only show classes from your direct dependencies. There are two possible reasons for this:
Relying on transitive dependencies is not a good idea, because it's possible that your dependencies will remove or change their dependencies and not consider that a breaking change.
If code completion listed all classes from all transitive dependencies the code completion list would be huge and include classes from packages you do not recognise (because they are just other packages dependencies). This would be a bad user experience and make it easy to accidentally rely on packages that are not listed in your pubspec.yaml.
The fix is to explicitly list core_domain and core_data in your pubspec.yaml too, because if your project is using classes from them, then they are dependencies.
Xcode isn't totally happy with my Package.swift file.
This is the line with an issue;
.package(name: "Utilities", url: "file:///Users/Alexander/Development/MMXX/Repositories/Utilities", from: Version("1.0.0"))
The package is a local package I have created, and is in use for a few other apps, so I know it is a valid package and its location is correct.
The Version 1.0.0 is "made up" in the sense that I haven't declared a version anywhere and didn't know what else to put there. It was the only thing I tried that Xcode was able to parse successfully -- it parsed the information, it just can't match it to my local repository.
The package was created using Xcode, and I didn't issue any commands to make it a git repository. Do I need to update my app's plist to allow disk access to a folder outside the app's sandbox?
Any pointers what else I can try would be most appreciated! Thanks.
Here is what finally worked:
in the dependencies: section
.package(path: "../Utilities")
in the targets: section
.product(name: "Utilities", package: "Utilities")
Edit:
I ran into this problem again. I dragged the package folder into the active project and it loaded the referenced libraries. But it wouldn't compile (couldn't find the new package).
Make sure you select the target and navigate to "Frameworks, Libraries and Embedded Content", click on the "+" and add the package: