2d-inc / historyofeverything Goto Github PK
View Code? Open in Web Editor NEWFlutter Launch Timeline Demo
Home Page: https://medium.com/2dimensions/the-history-of-everything-981d989e1b45
License: MIT License
Flutter Launch Timeline Demo
Home Page: https://medium.com/2dimensions/the-history-of-everything-981d989e1b45
License: MIT License
Looks like we have inconsistent margins and icons across these pages. The margins on both sides of the screen should be 20.
It also looks like we're using the wrong back icon on the About page. We should either make it system dependent (iOS shows the one on the About page, Android shows the one on the detail view page), or we just pick one and use it everywhere on both systems. For simplicity, I'd say we use the Android one (which is the one on the detail view page), which is the one we had in the mockups and in Zeplin.
All the icons should be black with an opacity of .5. Header text should be black with an opacity of .6.
Maybe related: When clicking around the "Animal" callout, the details for Dinosaurs or Insects opens despite the fact that neither the illustrations nor the callouts are there.
I ran the commands in the readme below but came across an error with running Gradle.
Startup commands:
git clone https://github.com/2d-inc/HistoryOfEverything.git
cd HistoryOfEverything/app
git submodule init
git submodule update
flutter run
Error:
Launching lib/main.dart on SM G935P in debug mode...
Initializing gradle... 1.7s
Resolving dependencies...
FAILURE: Build failed with an exception.
Where:
Build file '/Users/sagardesai/Documents/Personal/Repos/HistoryOfEverything/app/android/app/build.gradle' line: 53
What went wrong:
A problem occurred evaluating project ':app'.
path may not be null or empty string. path='null'
Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
Get more help at https://help.gradle.org
BUILD FAILED in 1s
Command: /Users/sagardesai/Documents/Personal/Repos/HistoryOfEverything/app/android/gradlew app:properties
Please review your Gradle project setup in the android/ folder.
Any idea what could be going on?
Repro:
It stays "Birth of the Universe for most places, except a very brief moment during "Life on Earth".
Everything works, but in profile mode, starting the app will give the following in console:
I/flutter (18295): ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
I/flutter (18295): The following NoSuchMethodError was thrown during paint():
I/flutter (18295): The getter 'width' was called on null.
I/flutter (18295): Receiver: null
I/flutter (18295): Tried calling: width
I/flutter (18295):
I/flutter (18295): When the exception was thrown, this was the stack:
I/flutter (18295): #0 MenuVignetteRenderObject.paint (package:timeline/main_menu/menu_vignette.dart:124)
I/flutter (18295): #1 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2085)
I/flutter (18295): #2 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:171)
I/flutter (18295): #3 _RenderStack&RenderBox&ContainerRenderObjectMixin&RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:2273)
I/flutter (18295): #4 RenderStack.paintStack (package:flutter/src/rendering/stack.dart:594)
I/flutter (18295): #5 RenderStack.paint (package:flutter/src/rendering/stack.dart:602)
I/flutter (18295): #6 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2085)
I/flutter (18295): #7 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:171)
I/flutter (18295): #8 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:122)
I/flutter (18295): #9 PaintingContext.pushClipRRect.<anonymous closure> (package:flutter/src/rendering/object.dart:418)
I/flutter (18295): #10 ClipContext._clipAndPaint (package:flutter/src/painting/clip.dart:29)
I/flutter (18295): #11 ClipContext.clipRRectAndPaint (package:flutter/src/painting/clip.dart:49)
I/flutter (18295): #12 PaintingContext.pushClipRRect (package:flutter/src/rendering/object.dart:418)
I/flutter (18295): #13 RenderClipRRect.paint (package:flutter/src/rendering/proxy_box.dart:1343)
I/flutter (18295): #14 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2085)
I/flutter (18295): #15 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:171)
I/flutter (18295): #16 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:122)
I/flutter (18295): #17 RenderDecoratedBox.paint (package:flutter/src/rendering/proxy_box.dart:1955)
I/flutter (18295): #18 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2085)
I/flutter (18295): #19 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:171)
I/flutter (18295): #20 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:122)
I/flutter (18295): #21 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2085)
I/flutter (18295): #22 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:171)
I/flutter (18295): #23 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:122)
I/flutter (18295): #24 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2085)
I/flutter (18295): #25 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:171)
I/flutter (18295): #26 RenderShiftedBox.paint (package:flutter/src/rendering/shifted_box.dart:70)
I/flutter (18295): #27 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2085)
I/flutter (18295): #28 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:171)
I/flutter (18295): #29 _RenderFlex&RenderBox&ContainerRenderObjectMixin&RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:2273)
I/flutter (18295): #30 RenderFlex.paint (package:flutter/src/rendering/flex.dart:931)
I/flutter (18295): #31 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2085)
I/flutter (18295): #32 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:171)
I/flutter (18295): #33 _RenderSingleChildViewport.paint.paintContents (package:flutter/src/widgets/single_child_scroll_view.dart:516)
I/flutter (18295): #34 PaintingContext.pushLayer (package:flutter/src/rendering/object.dart:367)
I/flutter (18295): #35 PaintingContext.pushClipRect (package:flutter/src/rendering/object.dart:391)
I/flutter (18295): #36 _RenderSingleChildViewport.paint (package:flutter/src/widgets/single_child_scroll_view.dart:520)
I/flutter (18295): #37 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2085)
I/flutter (18295): #38 PaintingContext._repaintCompositedChild (package:flutter/src/rendering/object.dart:128)
I/flutter (18295): #39 PaintingContext.repaintCompositedChild (package:flutter/src/rendering/object.dart:96)
I/flutter (18295): #40 PipelineOwner.flushPaint (package:flutter/src/rendering/object.dart:852)
I/flutter (18295): #41 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:283)
I/flutter (18295): #42 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:674)
I/flutter (18295): #43 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:219)
I/flutter (18295): #44 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:990)
I/flutter (18295): #45 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:930)
I/flutter (18295): #46 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:842)
I/flutter (18295): #47 _invoke (dart:ui/hooks.dart:145)
I/flutter (18295): #48 _drawFrame (dart:ui/hooks.dart:134)
I/flutter (18295):
I/flutter (18295): The following RenderObject was being processed when the exception was fired:
I/flutter (18295): MenuVignetteRenderObject#d5d57
I/flutter (18295): parentData: top=0.0; right=0.0; bottom=0.0; left=0.0; offset=Offset(0.0, 0.0)
I/flutter (18295): constraints: BoxConstraints(w=371.4, h=150.0)
I/flutter (18295): size: Size(371.4, 150.0)
I/flutter (18295): This RenderObject has no descendants.
I/flutter (18295): ════════════════════════════════════════════════════════════════════════════════════════════════════
I/flutter (18295): Another exception was thrown: NoSuchMethodError: The getter 'width' was called on null.
I/flutter (18295): Another exception was thrown: NoSuchMethodError: The getter 'width' was called on null.
I/flutter (18295): Another exception was thrown: NoSuchMethodError: The getter 'width' was called on null.
I/flutter (18295): Another exception was thrown: NoSuchMethodError: The getter 'width' was called on null.
I/flutter (18295): Another exception was thrown: NoSuchMethodError: The getter 'width' was called on null.
I/flutter (18295): Another exception was thrown: NoSuchMethodError: The getter 'width' was called on null.
The exception is thrown on the last line of the following snippet:
@override
void paint(PaintingContext context, Offset offset)
{
final Canvas canvas = context.canvas;
TimelineEntry entry = timelineEntry;
if(entry == null)
{
return;
}
TimelineAsset asset = entry.asset;
canvas.save();
double w = asset.width;// * Timeline.AssetScreenScale;
// ...
If this is the known issue from below, feel free to close.
As you zoom out and bigger jumps are displayed, don't show decimal points. E.g. -4B, -3B, -2B, etc.
As you zoom in and more precision is required, show decimal points. E.g. -4.9B, -4.8B, -4.7B, -4.6B, etc.
In the detail screen, I have trouble tapping the favorite the heart icon. Suggested fix: put padding between the GestureDetector and the icon.
How are we supposed to add more events? As far as I've reach, I made a Nima animation and exported it as generic binary and loaded it in assets dir. Then I added an entry in timeline.json with it's path but it doesn't load it. Am I doing sth wrong?
It would be good if we could have a free build server to see if any commit made break the code. I have heard there are few such services like Fastlane or Nevercode.
Hi!
I think I found a bug in the app.
You can reproduce it as follow:
This route to article page is veery laggy and sometimes even the whole app crashes without any messages in the console. (You can see it here: bug video on WeTransfer)
How can i open the files with .flr suffix extension under macOS 10.14 environment ?
Anyone could show me the function ?
The performance of the app on IPhone 6 is low
Would be nice to be able to tweak these easily.
error: The argument type 'int' can't be assigned to the parameter type 'double'.
error: Undefined class 'Future'. (undefined_class at [timeline] lib\main_menu\menu_data.dart:86)
On Android, in Profile mode:
The app switches to the timeline, scrolls down fast, then stops at around 1724 A.D. and stops responding. Looks like an infinite loop in the main Flutter/Dart isolate.
There is no console output, as far as I can tell.
Now that this app is free as in freedom, it would be lovely to have it distributed through F-Droid.
I had installed the flutter SDK, when I execute the following command
git clone https://github.com/2d-inc/HistoryOfEverything.git
cd HistoryOfEverything/app
git submodule init
git submodule update
flutter run
There is something wrong as follow:
bogon:app mq$ flutter run
Running "flutter packages get" in app... 7.0s
Launching lib/main.dart on ALP AL00 in debug mode...
Initializing gradle... ⢿
Oops; flutter has exited unexpectedly.
Sending crash report to Google.
Failed to send crash report due to a network error: SocketException: OS Error: Operation timed out, errno = 60, address =
clients2.google.com, port = 51139
Crash report written to /Users/mq/flutter/demo/HistoryOfEverything/app/flutter_01.log;
please let us know at https://github.com/flutter/flutter/issues.
bogon:app mq$
And my network is well ,What is wrong ? help me ,thanks
On Android, at least, a hamburger icon at top left signifies a drawer. Drawers usually don't cover the whole width of the screen, ale let the user come back to previous position in the underlying "main" screen.
We should choose one way and stick to it:
This is probably a large resource hog, and without it, I think the app might lose much of its jank on old devices.
Do this only if it's easy to do. Otherwise, let's talk about other possibilities. For the very low-spec devices, we might want to do more drastic optimizations, such as pausing the animations on scroll.
dependencies:
flutter:
sdk: flutter
// nima:
// path: ../dependencies/Nima-Flutter
// flare:
// path: ../dependencies/Flare-Flutter
nima: ^1.0.2
flare_flutter: ^1.2.0
I/flutter (12646): Another exception was thrown: NoSuchMethodError: The method '>' was called on null.
So we can easily tweak the feeling of the timeline movement.
Not sure if it's a bug. Seems like the 5 lines up to recorded history go to 20018. Maybe it's meant to go to 2018?
Entirely subjective, but I like to have some breathing room at the bottom of text. Right now the text only has the regular paragraph padding at the very bottom.
I think this can easily be 20-40% of the screen.
I've seen this happen after hot reloading quite a few times in a development session.
I'm not sure if it is related to a memory leak, but it sort of looks like a memory issue. No errors reported, I haven't profiled for it yet either but I saw it enough times today that I wanted to make sure we are tracking it.
It would be really good to get people testing the release build.
I loved your app. I would like to use this timeline in an application, would it be possible to set up an external plugin to implement this timeline, which will avoid modifying and revising these thousands of lines of code.
PS: I tested a lot of other timeline plugin, I admit that side design, ergonomics and customization, yours is by far the best.
Need to hook this up on the detail view.
Is this complete app..because I'm unable to run it in my Android Studio... is there any other file we have to download...
Please someone guide me how to do it properly
To reproduce:
Expected: Nothing happens
Actual: Scrolls back to World War II
What is the licence for this? MIT would be great. Thanks
To save on pinching (which can become repetitive and almost tiresome after a while), the user should be able to zoom in on a period by simply clicking on (or close to) the vertical line associated with the event.
For example, clicking on the light-green vertical line next to "Animals" here ...
... should zoom in so that we see this:
If you zoom out a lot, it's easy to get too far out and not know where you are anymore. Perhaps keep the scrollable range bounded?
The About Page and Favorites Page still need to be added.
Currently, I have to click the name of the event to get to the detail. I intuitively click on the animation, though.
On Android, there are two problems with the main menu:
Logs:
error: Invalid override. The type of 'AmeliaController.initialize' ('(FlutterActorArtboard) → void') isn't a subtype of 'FlareInteractionController.initialize' ('(dynamic) → void'). (strong_mode_invalid_method_override at [timeline] lib\article\controllers\amelia_controller.dart:24)
This will allow us to offset timeline events a bit from their actual point in time to avoid overlapping graphics and labels.
I try to follow the steps in getting started which are
git clone https://github.com/2d-inc/timeline.git
cd timeline/app
flutter run
when i use these steps i get an error as below
flutter run
Running "flutter packages get" in app...
Could not find a file named "pubspec.yaml" in "/Users/neil/timeline/dependencies/Flare-Flutter".
pub get failed (66)
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.