playbook-ui / playbook-flutter Goto Github PK
View Code? Open in Web Editor NEWLicense: BSD 3-Clause "New" or "Revised" License
License: BSD 3-Clause "New" or "Revised" License
This two scenarios can cause dead loop during resize snapshot size.
final story = Story('TestApi', scenarios: [
Scenario(
'SliverFillRemaining',
child: CustomScrollView(
controller: ScrollController(),
slivers: [
SliverToBoxAdapter(
child: Container(
color: Colors.red,
height: 50,
),
),
SliverFillRemaining(
child: ListView.separated(
itemBuilder: (_, __) => Container(
color: Colors.pink,
height: 20,
),
separatorBuilder: (_, __) => SizedBox(height: 2),
itemCount: 10,
),
),
],
),
),
Scenario(
'NestedScrollView',
child: NestedScrollView(
headerSliverBuilder: (context, innerBoxIsScrolled) {
return [
SliverToBoxAdapter(
child: Container(
color: Colors.red,
height: 50,
),
),
];
},
body: ListView.separated(
itemBuilder: (_, __) => Container(
color: Colors.pink,
height: 20,
),
separatorBuilder: (_, __) => SizedBox(height: 2),
itemCount: 50,
),
),
),
]);
... the order of the Scenarios in the Stories?
e.g.
abstract class TestTool {
Future<void> run(
Playbook playbook,
PlaybookBuilder builder,
{Future<void> Fucntion(WidgetTester)? setUp,}
);
}
testWidgets('Snapshot for ${story.title} ${scenario.title}', (tester) async {
// ... existed setup
setUp?.call(tester);
await expectLater(
find.byWidget(scenario.child),
matchesGoldenFile('$ensuredDirectoryPath/${story.title}/${scenario.title}.png'),
);
});
Thank you for creating a crazy useful package.
With the addition of the SearchBar class in flutter 3.10.0, there seems to be some name interference with the SearchBar defined in the playbook-flutter package.
https://api.flutter.dev/flutter/material/SearchBar-class.html
I have heard that @bowyer-app san will fix it immediately.
Error messages output when attempting to build
Error (Xcode): ... /... /... /... /.pub-cache/hosted/pub.dev/playbook_ui-0.0.5/lib/src/playbook_gallery.dart:96:24: Error: 'SearchBar' is imported from both 'package:flutter/src/material/search_anchor.dart' and 'package:playbook_ui/src/ component/search_bar.dart'.
The following assertion was thrown building Builder(dirty):
Looking up a deactivated widget's ancestor is unsafe.
At this point the state of the widget's element tree is no longer stable.
To safely refer to a widget's ancestor in its dispose() method, save a reference to the ancestor by
calling dependOnInheritedWidgetOfExactType() in the widget's didChangeDependencies() method.
The relevant error-causing widget was:
MaterialApp file:///lib/main.dart:32:12
When the exception was thrown, this was the stack:
#0 Element._debugCheckStateIsActiveForAncestorLookup.<anonymous closure> (package:flutter/src/widgets/framework.dart:3944:9)
#1 Element._debugCheckStateIsActiveForAncestorLookup (package:flutter/src/widgets/framework.dart:3958:6)
#2 Element.dependOnInheritedWidgetOfExactType (package:flutter/src/widgets/framework.dart:3973:12)
#3 Theme.of (package:flutter/src/material/theme.dart:107:53)
#4 ScenarioContainer.build.<anonymous closure>.<anonymous closure> (package:playbook_ui/src/scenario_container.dart:80:30)
#5 MaterialPageRoute.buildContent (package:flutter/src/material/page.dart:53:55)
#6 MaterialRouteTransitionMixin.buildPage (package:flutter/src/material/page.dart:106:27)
#7 _ModalScopeState.build.<anonymous closure>.<anonymous closure> (package:flutter/src/widgets/routes.dart:843:53)
#8 Builder.build (package:flutter/src/widgets/basic.dart:7798:48)
#9 StatelessElement.build (package:flutter/src/widgets/framework.dart:4648:28)
#10 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4574:15)
#11 Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#12 StatelessElement.update (package:flutter/src/widgets/framework.dart:4655:5)
#13 Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#14 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6090:14)
#15 Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#16 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6090:14)
#17 Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#18 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#19 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4746:11)
#20 Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#21 StatefulElement.update (package:flutter/src/widgets/framework.dart:4778:5)
#22 Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#23 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6090:14)
#24 Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#25 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6090:14)
#26 Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#27 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#28 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4746:11)
#29 Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#30 StatefulElement.update (package:flutter/src/widgets/framework.dart:4778:5)
#31 Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#32 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#33 Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#34 StatelessElement.update (package:flutter/src/widgets/framework.dart:4655:5)
#35 Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#36 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#37 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4746:11)
#38 Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#39 StatefulElement.update (package:flutter/src/widgets/framework.dart:4778:5)
#40 Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#41 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6090:14)
#42 Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#43 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#44 Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#45 ProxyElement.update (package:flutter/src/widgets/framework.dart:4922:5)
#46 _InheritedNotifierElement.update (package:flutter/src/widgets/inherited_notifier.dart:181:11)
#47 Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#48 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6090:14)
#49 Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#50 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#51 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4746:11)
#52 Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#53 StatefulElement.update (package:flutter/src/widgets/framework.dart:4778:5)
#54 Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#55 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#56 Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#57 ProxyElement.update (package:flutter/src/widgets/framework.dart:4922:5)
#58 Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#59 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#60 Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#61 ProxyElement.update (package:flutter/src/widgets/framework.dart:4922:5)
#62 Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#63 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#64 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4746:11)
#65 Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#66 StatefulElement.update (package:flutter/src/widgets/framework.dart:4778:5)
#67 Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#68 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#69 Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#70 StatelessElement.update (package:flutter/src/widgets/framework.dart:4655:5)
#71 Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#72 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#73 Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#74 StatelessElement.update (package:flutter/src/widgets/framework.dart:4655:5)
#75 Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#76 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6090:14)
#77 Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#78 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#79 Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#80 ProxyElement.update (package:flutter/src/widgets/framework.dart:4922:5)
#81 Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#82 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#83 Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#84 ProxyElement.update (package:flutter/src/widgets/framework.dart:4922:5)
#85 Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#86 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#87 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4746:11)
#88 Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#89 StatefulElement.update (package:flutter/src/widgets/framework.dart:4778:5)
#90 Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#91 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#92 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4746:11)
#93 Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#94 StatefulElement.update (package:flutter/src/widgets/framework.dart:4778:5)
#95 Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#96 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#97 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4746:11)
#98 Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#99 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2582:33)
#100 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:875:21)
#101 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:328:5)
#102 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15)
#103 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1082:9)
#104 SchedulerBinding.scheduleWarmUpFrame.<anonymous closure> (package:flutter/src/scheduler/binding.dart:865:7)
(elided 4 frames from class _RawReceivePortImpl, class _Timer, and dart:async-patch)
https://pub.dev/packages/golden_toolkit#loading-fonts
By default, flutter test only uses a single "test" font called Ahem. This font is designed to show black spaces for every character and icon. This obviously makes goldens much less valuable if you are trying to verify that your app looks correct.
Here is how golden_toolkit
loading roboto font:
https://github.com/eBay/flutter_glove_box/blob/master/packages/golden_toolkit/lib/src/font_loader.dart
https://melos.invertase.dev/
Melos support these features:
melos version
melos publish
melos bootstrap
(we should remove defined pub:get
script)@GenerateScenario(
layout: ScenarioLayout.fixedV(
500,
crossAxisLayout: ScenarioLayoutFixed(300),
),
)
Currently, playbook snapshot is using _
between story and scenario title:
https://github.com/ca-irvine/playbook-flutter/blob/e49b652d06363de395e22678728766b0d38d01f2/playbook_snapshot/lib/src/snapshot.dart#L36
How about replacing _
with /
so file screenshot file structure becomes:
├── storyA
│ ├── scenario1.jpg
│ ├── scenario2.jpg
│ └── scenario3.jpg
└── storyB
└── scenario1.jpg
This makes it easier to explore the Reg-suit report.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.