Skip to content

Add lint warning about recommended import style #57700

Open
@Rockvole

Description

@Rockvole

I have some code which confused me for a while.

main.dart
import 'package:kbml_viewer/globals.dart';
import 'preferences/preferences_description_list.dart';

preferences_description_list.dart
import '../globals.dart';

The main page displays the preferences_description_list (a list of descriptions).
The main page, has a preferences page button and that preferences page also displays a variant of the same list (e.g. can also delete items from the list).

When displaying the list from the main page I get an error :

E/flutter ( 3086): [ERROR:topaz/lib/tonic/logging/dart_error.cc(16)] Unhandled exception:
E/flutter ( 3086): FileSystemException: Directory listing failed, path = 'null/keyboards/' (OS Error: No such file or directory, errno = 2)
E/flutter ( 3086): #0      FileTools.directoriesInDirectory (package:keyboard/src/file_tools.dart:21:5)
E/flutter ( 3086): <asynchronous suspension>
E/flutter ( 3086): dart-lang/sdk#57147      _PreferencesDescriptionsState._onRefresh (package:kbml_viewer/preferences/preferences_description_list.dart:47:42)
E/flutter ( 3086): <asynchronous suspension>
E/flutter ( 3086): dart-lang/sdk#57148      _PreferencesDescriptionsState.initState (package:kbml_viewer/preferences/preferences_description_list.dart:72:5)
E/flutter ( 3086): dart-lang/sdk#57149      StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3743:58)
E/flutter ( 3086): dart-lang/sdk#57150      ComponentElement.mount (package:flutter/src/widgets/framework.dart:3609:5)
E/flutter ( 3086): dart-lang/sdk#57151      Element.inflateWidget (package:flutter/src/widgets/framework.dart:2899:14)
E/flutter ( 3086): dart-lang/sdk#57152      Element.updateChild (package:flutter/src/widgets/framework.dart:2702:12)
E/flutter ( 3086): dart-lang/sdk#57153      SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4646:14)
E/flutter ( 3086): dart-lang/sdk#57154      Element.inflateWidget (package:flutter/src/widgets/framework.dart:2899:14)
E/flutter ( 3086): dart-lang/sdk#57155      Element.updateChild (package:flutter/src/widgets/framework.dart:2702:12)
E/flutter ( 3086): dart-lang/sdk#57156     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3645:16)
E/flutter ( 3086): dart-lang/sdk#57157     Element.rebuild (package:flutter/src/widgets/framework.dart:3487:5)
E/flutter ( 3086): dart-lang/sdk#57158     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3614:5)
E/flutter ( 3086): dart-lang/sdk#57159     ComponentElement.mount (package:flutter/src/widgets/framework.dart:3609:5)
E/flutter ( 3086): dart-lang/sdk#57160     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2899:14)
E/flutter ( 3086): dart-lang/sdk#57161     Element.updateChild (package:flutter/src/widgets/framework.dart:2702:12)
E/flutter ( 3086): dart-lang/sdk#57162     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4646:14)
E/flutter ( 3086): dart-lang/sdk#57163     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2899:14)
E/flutter ( 3086): dart-lang/sdk#57164     Element.updateChild (package:flutter/src/widgets/framework.dart:2702:12)
E/flutter ( 3086): dart-lang/sdk#57165     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4646:14)
E/flutter ( 3086): dart-lang/sdk#57166     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2899:14)
E/flutter ( 3086): dart-lang/sdk#57167     Element.updateChild (package:flutter/src/widgets/framework.dart:2702:12)
E/flutter ( 3086): dart-lang/sdk#57168     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4646:14)
E/flutter ( 3086): dart-lang/sdk#57169     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2899:14)
E/flutter ( 3086): dart-lang/sdk#57170     Element.updateChild (package:flutter/src/widgets/framework.dart:2702:12)
E/flutter ( 3086): dart-lang/sdk#57171     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4646:14)
E/flutter ( 3086): dart-lang/sdk#57172     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2899:14)
E/flutter ( 3086): dart-lang/sdk#57173     Element.updateChild (package:flutter/src/widgets/framework.dart:2702:12)
E/flutter ( 3086): dart-lang/sdk#57174     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3645:16)
E/flutter ( 3086): dart-lang/sdk#57175     Element.rebuild (package:flutter/src/widgets/framework.dart:3487:5)
E/flutter ( 3086): dart-lang/sdk#57176     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3614:5)
E/flutter ( 3086): dart-lang/sdk#57177     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3761:11)
E/flutter ( 3086): dart-lang/sdk#57178     ComponentElement.mount (package:flutter/src/widgets/framework.dart:3609:5)
E/flutter ( 3086): dart-lang/sdk#57179     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2899:14)
E/flutter ( 3086): dart-lang/sdk#57182     Element.updateChild (package:flutter/src/widgets/framework.dart:2702:12)
E/flutter ( 3086): dart-lang/sdk#57183     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3645:16)
E/flutter ( 3086): dart-lang/sdk#57184     Element.rebuild (package:flutter/src/widgets/framework.dart:3487:5)
E/flutter ( 3086): dart-lang/sdk#57185     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3614:5)
E/flutter ( 3086): dart-lang/sdk#57186     ComponentElement.mount (package:flutter/src/widgets/framework.dart:3609:5)
E/flutter ( 3086): dart-lang/sdk#57187     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2899:14)
E/flutter ( 3086): dart-lang/sdk#57188     Element.updateChild (package:flutter/src/widgets/framework.dart:2702:12)
E/flutter ( 3086): dart-lang/sdk#57189     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3645:16)
E/flutter ( 3086): dart-lang/sdk#57190     Element.rebuild (package:flutter/src/widgets/framework.dart:3487:5)
E/flutter ( 3086): dart-lang/sdk#57191     ComponentElement._firstBuild (package:flutter/src/widgets/framewor
E/flutter ( 3086): [ERROR:topaz/lib/tonic/logging/dart_error.cc(16)] Unhandled exception:
E/flutter ( 3086): FileSystemException: Directory listing failed, path = 'null/keyboards/' (OS Error: No such file or directory, errno = 2)
E/flutter ( 3086): #0      FileTools.directoriesInDirectory (package:keyboard/src/file_tools.dart:21:5)
E/flutter ( 3086): <asynchronous suspension>
E/flutter ( 3086): dart-lang/sdk#57147      _PreferencesDescriptionsState._onRefresh (package:kbml_viewer/preferences/preferences_description_list.dart:47:42)
E/flutter ( 3086): <asynchronous suspension>
E/flutter ( 3086): dart-lang/sdk#57148      RefreshIndicatorState._show.<anonymous closure> (package:flutter/src/material/refresh_indicator.dart:338:53)
E/flutter ( 3086): dart-lang/sdk#57149      _RootZone.runUnary (dart:async/zone.dart:1381:54)
E/flutter ( 3086): dart-lang/sdk#57150      _FutureListener.handleValue (dart:async/future_impl.dart:129:18)
E/flutter ( 3086): dart-lang/sdk#57151      Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:637:45)
E/flutter ( 3086): dart-lang/sdk#57152      Future._propagateToListeners (dart:async/future_impl.dart:666:32)
E/flutter ( 3086): dart-lang/sdk#57153      Future._completeWithValue (dart:async/future_impl.dart:481:5)
E/flutter ( 3086): dart-lang/sdk#57154      Future._asyncComplete.<anonymous closure> (dart:async/future_impl.dart:511:7)
E/flutter ( 3086): dart-lang/sdk#57155      _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
E/flutter ( 3086): dart-lang/sdk#57156     _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)

When I display the list from the preferences page it works just fine. It confused me for a while since I am new to dart I thought I didnt write the singleton correctly.

I can fix the error, by either changing to :
import 'package:kbml_viewer/preferences/preferences_description_list.dart';
in the main page, or :
import 'package:kbml_viewer/globals.dart';

I realise I should not be mixing styles, but for beginners it would be nice to get some advice on the best style.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3A lower priority bug or feature requestarea-devexpFor issues related to the analysis server, IDE support, linter, `dart fix`, and diagnostic messages.devexp-linterIssues with the analyzer's support for the linter packagelinter-lint-requesttype-enhancementA request for a change that isn't a bug

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions