Skip to content

Commit

Permalink
feat: support specifying legends and legend text build.
Browse files Browse the repository at this point in the history
  • Loading branch information
CorvusYe committed Sep 16, 2024
1 parent 8914e38 commit 0789cf5
Show file tree
Hide file tree
Showing 5 changed files with 107 additions and 26 deletions.
27 changes: 27 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,30 @@
## 1.1.2
- feat: support specifying legends and legend text build.

example:
```dart
Options()
..legendBuilder = (color, i) { // default
return RectangleComponent.fromRect(
Rect.fromLTWH(40, 50.0 + 30 * i, 30, 18),
paint: Paint()..color = color,
);
}
..legendTextBuilder = (tag, i, color, position) { // default
return TextComponent(
text: tag,
position: Vector2(position.x + 40, position.y - 6),
// position: Vector2(position.x + 40, position.y - 2),
// textRenderer: TextPaint(
// style: TextStyle(
// fontSize: 17.0,
// color: Colors.white,
// ),
// ),
);
}
```

## 1.1.1
- fix usage of both Scale and Pan on mobile platforms. ( [#12](https://github.com/graph-cn/flutter_graph_view/pull/12), via: [Mykyta Sadchenko](https://github.com/muknta))
- feat: support zooming through gestures.
Expand Down
58 changes: 45 additions & 13 deletions example/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ packages:
path: ".."
relative: true
source: path
version: "1.0.3"
version: "1.1.1"
flutter_lints:
dependency: "direct dev"
description:
Expand All @@ -95,6 +95,30 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
leak_tracker:
dependency: transitive
description:
name: leak_tracker
sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a"
url: "https://pub.dev"
source: hosted
version: "10.0.4"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8"
url: "https://pub.dev"
source: hosted
version: "3.0.3"
leak_tracker_testing:
dependency: transitive
description:
name: leak_tracker_testing
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
url: "https://pub.dev"
source: hosted
version: "3.0.1"
lints:
dependency: transitive
description:
Expand All @@ -107,26 +131,26 @@ packages:
dependency: transitive
description:
name: matcher
sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
url: "https://pub.dev"
source: hosted
version: "0.12.16"
version: "0.12.16+1"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
url: "https://pub.dev"
source: hosted
version: "0.5.0"
version: "0.8.0"
meta:
dependency: transitive
description:
name: meta
sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e
sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136"
url: "https://pub.dev"
source: hosted
version: "1.10.0"
version: "1.12.0"
ordered_set:
dependency: transitive
description:
Expand All @@ -139,10 +163,10 @@ packages:
dependency: transitive
description:
name: path
sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
url: "https://pub.dev"
source: hosted
version: "1.8.3"
version: "1.9.0"
plugin_platform_interface:
dependency: transitive
description:
Expand Down Expand Up @@ -200,10 +224,10 @@ packages:
dependency: transitive
description:
name: test_api
sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f"
url: "https://pub.dev"
source: hosted
version: "0.6.1"
version: "0.7.0"
url_launcher:
dependency: "direct main"
description:
Expand Down Expand Up @@ -276,6 +300,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.1.4"
vm_service:
dependency: transitive
description:
name: vm_service
sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec"
url: "https://pub.dev"
source: hosted
version: "14.2.1"
web:
dependency: transitive
description:
Expand All @@ -285,5 +317,5 @@ packages:
source: hosted
version: "0.3.0"
sdks:
dart: ">=3.2.3 <4.0.0"
flutter: ">=3.16.6"
dart: ">=3.3.0 <4.0.0"
flutter: ">=3.18.0-18.0.pre.54"
19 changes: 19 additions & 0 deletions lib/core/options.dart
Original file line number Diff line number Diff line change
Expand Up @@ -112,4 +112,23 @@ class Options {
///
/// @zh: overlay消失的延迟
Duration? panelDelay;

/// @en: legend component builder
///
/// @zh: 图例组件
PositionComponent Function(Color color, int i) legendBuilder = (color, i) {
return RectangleComponent.fromRect(Rect.fromLTWH(40, 50.0 + 30 * i, 30, 18),
paint: Paint()..color = color);
};

/// @en: default legend text builder
///
/// @zh: 默认图例文字构建器
TextComponent Function(String tag, int i, Color color, Vector2 position)
legendTextBuilder = (tag, i, color, position) {
return TextComponent(
text: tag,
position: Vector2(position.x + 40, position.y - 6),
);
};
}
27 changes: 15 additions & 12 deletions lib/widgets/graph_component.dart
Original file line number Diff line number Diff line change
Expand Up @@ -216,18 +216,21 @@ class GraphComponent extends FlameGame
for (var i = legendCount; i < graph.allTags.length; i++) {
var tag = graph.allTags[i];

add(
RectangleComponent.fromRect(
Rect.fromLTWH(40, 50.0 + 30 * i, 30, 18),
paint: Paint()
..color = graphStyle.colorByTag(tag, graph.allTags) ??
(i < graphStyle.tagColorByIndex.length
? graphStyle.tagColorByIndex[i]
: graphStyle.defaultColor()[0]),
),
);

add(TextComponent(text: tag, position: Vector2(40 + 40, 44.0 + 30 * i)));
var legendColor = graphStyle.colorByTag(tag, graph.allTags) ??
(i < graphStyle.tagColorByIndex.length
? graphStyle.tagColorByIndex[i]
: graphStyle.defaultColor()[0]);

// add legend
// 添加图例
var legendItem = options.legendBuilder(legendColor, i);
add(legendItem);

// add legend text
// 添加图例文字
var legendText =
options.legendTextBuilder(tag, i, legendColor, legendItem.position);
add(legendText);

legendCount = i;
}
Expand Down
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: flutter_graph_view
description: Widgets for beautiful graphic data structures, such as force-oriented diagrams.
version: 1.1.1
version: 1.1.2
repository: https://github.com/dudu-ltd/flutter_graph_view
homepage: https://graph-cn.github.io/flutter_graph_view

Expand Down

0 comments on commit 0789cf5

Please sign in to comment.