I’m new to AngularDart and am trying to add a dropdown selector to my project. I’m looking at the examples in the AngularDart Gallery, specifically: https://dart-lang.github.io/angular_components/#/material_dropdown_select
I’ve gone back to “basics” and created a new project using the IntelliJ IDEA > New Project > Dart > AngularDart Web App. The “My First AngularDart App” (a todo_list app) builds and runs OK.
So then to add a dropdown selector, after trying various approaches, I’ve added the demo code from the AngularDart Gallery to this project:
- On the URL above, clicked “Source Code” next to MaterialDropdownSelectSimpleDemoComponent
- Went up one level in the repository and copied the contents of material_dropdown_select_simple_demo (.dart, .html and .scss) into my project
- [Problem 1] As an aside, I actually went up multiple levels until I could Clone dart-lang/angular_components. But I can’t get this to build as a project so that I can play with it “live” which might help. Am I missing something obvious here??
- So I have a material_dropdown_select_simple_component.dart, .html, .scss in my project and updated the @Component selector: templateUrl: and stryleUrls: to match my component name
- Then in the main component in the project (app_component.html) I add:
- And add the MaterialDropdownSelectSimpleDemoComponent class name to the directives: and add the associated import statement
- Add to dependencies in pubspec.yaml (due to the use of scss)
I then try to run it and get:
[SEVERE] build_web_compilers|entrypoint on web/main.dart: Unable to find modules for some sources, this is usually the result of either a bad import, a missing dependency in a package (or possibly a dev_dependency needs to move to a real dependency), or a build failure (if importing a generated file). Please check the following imports: `import 'package:DropDownSelectv4/src/todo_list/material_dropdown_select_simple_component.scss.css.shim.dart' as import0;` from DropDownSelectv4|lib/src/todo_list/material_dropdown_select_simple_component.template.dart at 10:1
So I have a line number in a template.dart file, and I can’t find this file.
In reviewing the code, I notice that in the material_drop_select_simple_component.scss there are red squiggles under:
@import 'package:angular_components/css/material/material'; @import 'package:angular_components/css/material/shadow';
Maybe I am missing a dependency in my pubspec.yaml file, but how do I determine what?
I currently have:
dependencies: angular: ^5.2.0 angular_components: ^0.11.0 sass_builder: ^2.0.0 dev_dependencies: angular_test: ^2.2.0 build_runner: ^1.1.2 build_test: ^0.10.3 build_web_compilers: ^1.0.0 pedantic: ^1.0.0 test: ^1.5.1
I’m thinking that I am missing something basic here. Any help would be appreciated.
[Problem 1] As an aside, I actually went up multiple levels until I
could Clone dart-lang/angular_components. But I can’t get this to
build as a project so that I can play with it “live” which might help.
Am I missing something obvious here??
The only fully fledged package in the repo that you can build and experiment with locally is called angular_components_example. It is the package that builds the example gallery.
[Problem 2] So I have a line number in a template.dart file, and I
can’t find this file.
Files that are generated during your build like .template.dart (by angular) or .css (by sass_builder) will be located in a hidden directory at the root of your package called
.dart_tool/build/generated/<your package name>
[Problem 3] In reviewing the code, I notice that in the
material_drop_select_simple_component.scss there are red squiggles
I think the red squiggles are actually red herrings and you shouldn’t worry about those imports. They are from a little workaround we created to allow you to import sass files with knowledge of the dart package system and there isn’t any integration with IDEs to support the imports.
I think the real problem is the name of the sass file in your
material_dropdown_select_simple_component.dart file. Change the line to:
By default the sass_builder package compiles
.scss files in your package to
.css files. (we just use a different convention within the angular_components package so when you copied the file it probably has
.scss.css in it.
Answered By – nshahan
Answer Checked By – Pedro (FlutterFixes Volunteer)