SpaceClockScene class

Sun Clock

Draws the Actual Sun/Moon/Earth/Stars Clock

A general explanation is as follows

Draws in order

  • Fixed star background (rotating over time, for motion effect)

  • Star Simulation

    • Matrix math for projecting and transforming to "time space" and screen space
    • Batched by Z distance to set size/color and draw with drawPoints() to reduce draw calls
  • Sun

    • "Hour Hand".
    • First draws a circle (Base Layer) in white
    • Drawn in layers (4 images)
    • The layers have varying blend modes (Multiply/Plus/SoftLight)
      • Multiply to emulate sunspots
      • Plus/Softlight to emulate light/glowing
    • Layers rotate slowly in varying directions
    • Each layer is drawn twice, once flipped and rotated in opposite direction
    • The effective 8 layers do a Perlin compose a perlin noise that looks a lot like the sun.
  • Earth

    • "Minute Hand"
    • Rotates around the center of the screen once per hour.
    • Shadow layer is drawn over the earth, opposite the sun
  • Moon

    • "Seconds Hand"
    • Rotates around earth once a minute
    • Shadow layer is drawn over the moon, opposite the sun

Notes: This is graphics/math heavy, custom code to create the scene

Space Clock Scene

Handles the drawing of the space clock

Inheritance

Constructors

SpaceClockScene(ClockModel model, {bool showMoon = false, bool showEarth = true, bool showSun = false, Key? key})
SpaceClockScene
const

Properties

hashCode int
The hash code for this object.
no setterinherited
key Key?
Controls how one widget replaces another widget in the tree.
finalinherited
model ClockModel
ClockModel from the challenge
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
showEarth bool
final
showMoon bool
final
showSun bool
final

Methods

build(BuildContext context) Widget
Describes the part of the user interface represented by this widget.
override
createElement() StatelessElement
Creates a StatelessElement to manage this widget's location in the tree.
inherited
debugDescribeChildren() List<DiagnosticsNode>
Returns a list of DiagnosticsNode objects describing this node's children.
inherited
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep.
inherited
toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) String
A string representation of this object.
inherited
toStringDeep({String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug}) String
Returns a string representation of this node and its descendants.
inherited
toStringShallow({String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) String
Returns a one-line detailed description of the object.
inherited
toStringShort() String
A short, textual description of this widget.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited