Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Add CodeView in Remix's documentation #419

Draft
wants to merge 10 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -95,4 +95,5 @@ pubspec_overrides.yaml
pubspec.lock

# FVM Version Cache
.fvm/
.fvm/
packages/remix/context.md
4 changes: 2 additions & 2 deletions examples/themed_button/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,11 @@ dev_dependencies:
flutter_test:
sdk: flutter

flutter_lints: ^3.0.0
flutter_lints: ^4.0.0
mix_lint:
path: ../../packages/mix_lint
widgetbook_generator: ^3.7.0
build_runner: ^2.4.0
build_runner: ^2.4.9

flutter:
uses-material-design: true
2 changes: 1 addition & 1 deletion examples/todo_list/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ dev_dependencies:
mix_lint:
path: ../../packages/mix_lint

flutter_lints: ^3.0.0
flutter_lints: ^4.0.0

flutter:
uses-material-design: true
53 changes: 53 additions & 0 deletions lints.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
analyzer:
exclude:
linter:
rules:
# TODO: Turn this to true when all public apis are documented
public_member_api_docs: false
prefer_relative_imports: true

dart_code_metrics:
extends:
- package:dart_code_metrics_presets/recommended.yaml
- package:dart_code_metrics_presets/metrics_recommended.yaml
metrics-exclude:
- test/**
rules-exclude:
- test/**
rules:
# avoid-collection-mutating-methods: true
newline-before-return: true
avoid-importing-entrypoint-exports:
only-in-src: true
prefer-match-file-name: false
prefer-overriding-parent-equality: false
prefer-correct-callback-field-name: false
prefer-single-widget-per-file: false
match-getter-setter-field-names: false
prefer-dedicated-media-query-methods: false
avoid-shadowing: false
enum-constants-ordering: false
avoid-unsafe-collection-methods: false
prefer-prefixed-global-constants: false
avoid-returning-widgets: false
arguments-ordering:
child-last: true
avoid-nested-conditional-expressions:
acceptable-level: 3
member-ordering:
order:
- public-fields
- private-fields
- constructors
- static-methods
- private-methods
- private-getters
- private-setters
- public-getters
- public-setters
- public-methods
- overridden-public-methods
- overridden-public-getters
- build-method
prefer-named-boolean-parameters:
ignore-single: true
11 changes: 8 additions & 3 deletions melos.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# yaml-language-server: $schema=./schemas/melos.yaml.schema.json
name: mix_workspace

sdkPath: .fvm/flutter_sdk
Expand All @@ -12,9 +13,13 @@ command:
environment:
sdk: ">=3.3.0 <4.0.0"
flutter: ">=3.19.0"
# publish:
# hooks:
# pre: melos run gen:build
dev_dependencies:
flutter_lints: ^4.0.0
dart_code_metrics_presets: ^2.14.0
build_runner: ^2.4.9
publish:
hooks:
pre: melos run gen:build

scripts:
# ANALYSIS
Expand Down
7 changes: 6 additions & 1 deletion mix.code-workspace
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@
{
"name": "remix",
"path": "packages/remix"
},
{
"name": "mix_animate",
"path": "packages/mix_animate"
}
],
"settings": {
Expand All @@ -33,5 +37,6 @@
"files.exclude": {
".fvm/**": true,
"website":true,
},}
},
}
}
59 changes: 3 additions & 56 deletions packages/mix/analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -1,57 +1,4 @@

include: package:flutter_lints/flutter.yaml

analyzer:
exclude:
# - "**/*.g.dart
linter:
rules:
# TODO: Turn this to true when all public apis are documented
public_member_api_docs: false
prefer_relative_imports: true

dart_code_metrics:
extends:
- package:dart_code_metrics_presets/recommended.yaml
- package:dart_code_metrics_presets/metrics_recommended.yaml
metrics-exclude:
- test/**
rules-exclude:
- test/**
rules:
# avoid-collection-mutating-methods: true
newline-before-return: true
avoid-importing-entrypoint-exports:
only-in-src: true
prefer-match-file-name: false
prefer-overriding-parent-equality: false
prefer-correct-callback-field-name: false
prefer-single-widget-per-file: false
match-getter-setter-field-names: false
prefer-dedicated-media-query-methods: false
avoid-shadowing: false
enum-constants-ordering: false
avoid-unsafe-collection-methods: false
prefer-prefixed-global-constants: false
avoid-returning-widgets: false
arguments-ordering:
child-last: true
avoid-nested-conditional-expressions:
acceptable-level: 3
member-ordering:
order:
- public-fields
- private-fields
- constructors
- static-methods
- private-methods
- private-getters
- private-setters
- public-getters
- public-setters
- public-methods
- overridden-public-methods
- overridden-public-getters
- build-method
prefer-named-boolean-parameters:
ignore-single: true
includes:
- ../../lints.yaml
- package:flutter_lints/flutter.yaml
4 changes: 2 additions & 2 deletions packages/mix/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ dependencies:

dev_dependencies:
flutter_lints: ^4.0.0
dart_code_metrics_presets: ^2.14.0
build_runner: ^2.4.9
flutter_test:
sdk: flutter
dart_code_metrics_presets: ^2.13.0
build_runner: ^2.4.9
mix_generator: ^0.2.2

# flutter:
Expand Down
33 changes: 3 additions & 30 deletions packages/mix_annotations/analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -1,30 +1,3 @@
# This file configures the static analysis results for your project (errors,
# warnings, and lints).
#
# This enables the 'recommended' set of lints from `package:lints`.
# This set helps identify many issues that may lead to problems when running
# or consuming Dart code, and enforces writing Dart using a single, idiomatic
# style and format.
#
# If you want a smaller set of lints you can change this to specify
# 'package:lints/core.yaml'. These are just the most critical lints
# (the recommended set includes the core lints).
# The core lints are also what is used by pub.dev for scoring packages.

include: package:lints/recommended.yaml

# Uncomment the following section to specify additional rules.

# linter:
# rules:
# - camel_case_types

# analyzer:
# exclude:
# - path/to/excluded/files/**

# For more information about the core and recommended set of lints, see
# https://dart.dev/go/core-lints

# For additional information about configuring this file, see
# https://dart.dev/guides/language/analysis-options
includes:
- ../../lints.yaml
- package:lints/recommended.yaml
3 changes: 3 additions & 0 deletions packages/mix_generator/analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
includes:
- ../../lints.yaml
- package:lints/recommended.yaml
2 changes: 1 addition & 1 deletion packages/mix_generator/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ dependencies:

dev_dependencies:
test: ^1.24.4
dart_code_metrics_presets: ^2.13.0
dart_code_metrics_presets: ^2.14.0
build_runner: ^2.4.9
build_test: ^2.2.2
source_gen_test: ^1.0.6
3 changes: 3 additions & 0 deletions packages/mix_lint/analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
includes:
- ../../lints.yaml
- package:lints/recommended.yaml
9 changes: 3 additions & 6 deletions packages/remix/analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
include: package:flutter_lints/flutter.yaml

linter:
rules:
library_private_types_in_public_api: false
non_constant_identifier_names: false
includes:
- ../../lints.yaml
- package:flutter_lints/flutter.yaml
4 changes: 2 additions & 2 deletions packages/remix/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ targets:
builders:
mix_generator|spec:
generate_for:
- lib/**/*_spec.dart
- lib/**/*.dart
mix_generator|dto:
generate_for:
- lib/**/*_dto.dart
- lib/components/**/*.dart
64 changes: 31 additions & 33 deletions packages/remix/demo/lib/components/avatar_use_case.dart
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import 'package:demo/main.dart';
import 'package:flutter/material.dart';
import 'package:remix/components/avatar/avatar_variants.dart';
import 'package:remix/components/avatar/avatar_widget.dart';
import 'package:remix/components/avatar/avatar.dart';
import 'package:widgetbook/widgetbook.dart';
import 'package:widgetbook_annotation/widgetbook_annotation.dart' as widgetbook;

final _key = GlobalKey();
final _avatarKey = GlobalKey();

@widgetbook.UseCase(
name: 'Avatar Component',
Expand All @@ -16,41 +17,38 @@ Widget buildAvatarUseCase(BuildContext context) {
initialValue: 'https://i.pravatar.cc/150?img=48',
);

Widget buildAvatar(AvatarVariant variant) {
return Column(
children: [
Text(variant.name.split('.').last),
const SizedBox(height: 10),
RxAvatar(
image: NetworkImage(imageUrl),
fallback: context.knobs.string(
label: 'Fallback',
initialValue: 'AB',
),
variant: variant,
size: context.knobs.list(
label: 'Size',
options: AvatarSize.values,
initialOption: AvatarSize.size4,
labelBuilder: (value) => value.name.split('.').last,
),
radius: context.knobs.list(
label: 'Radius',
options: AvatarRadius.values,
initialOption: AvatarRadius.full,
labelBuilder: (value) => value.name.split('.').last,
),
),
],
);
final avatar = _avatarKey.currentWidget;
if (avatar is RxAvatar) {
$code.value = avatar.toStringComponent();
}

return KeyedSubtree(
key: _key,
child: Wrap(
spacing: 12,
runSpacing: 12,
children: AvatarVariant.values.map(buildAvatar).toList(),
child: RxAvatar(
key: _avatarKey,
image: NetworkImage(imageUrl),
fallback: context.knobs.string(
label: 'Fallback',
initialValue: 'AB',
),
variant: context.knobs.list(
label: 'Variant',
initialOption: AvatarVariant.soft,
options: AvatarVariant.values,
labelBuilder: (value) => value.name.split('.').last,
),
size: context.knobs.list(
label: 'Size',
options: AvatarSize.values,
initialOption: AvatarSize.size4,
labelBuilder: (value) => value.name.split('.').last,
),
radius: context.knobs.list(
label: 'Radius',
options: AvatarRadius.values,
initialOption: AvatarRadius.full,
labelBuilder: (value) => value.name.split('.').last,
),
),
);
}
Loading