SessionDetailsScreen class

Branded, read-only Session-Details screen — opened by tapping the "Session earnings" header in the FAB radial menu.

It shows the tester, honestly, why the live € is what it is: payout is gated by activity, not raw time. The "Aktive Zeit" (foreground minutes) vs "Bezahlte Zeit" (engaged minutes via PayoutCalculator.engagedMinutes) split makes the gap visible — an app left open + idle shows a big Aktive/Bezahlte gap.

Takes a live snapshot of the session metrics as constructor params (the wrapper reads them off SessionManager right before pushing), which keeps the screen pure + trivially testable.

Inheritance

Constructors

SessionDetailsScreen({Key? key, required DateTime startedAt, required int foregroundSeconds, required int taps, required int screenViews, required int pauseCount, required int feedbackCount, required int bugsReported, int? backgroundCrashes, double earningsBaseAmount = 1.0, double earningsPerMinuteRate = 0.10, String earningsCurrency = 'EUR', VoidCallback? onEndSession, VoidCallback? onViewTasks})
const

Properties

backgroundCrashes → int?
Cached/background crashes for the current session. Null when the host can't supply a count — rendered as "—".
final
bugsReported → int
Bug reports submitted this session.
final
earningsBaseAmount → double
Earnings inputs — MUST match the FAB's so the € shown here equals the FAB header (both = base + engagedMinutes × rate). Defaults mirror FloatingFeedbackButton's placeholder values.
final
earningsCurrency → String
final
earningsPerMinuteRate → double
final
feedbackCount → int
General-feedback submissions this session.
final
foregroundSeconds → int
Accumulated foreground seconds for the session.
final
hashCode → int
The hash code for this object.
no setterinherited
key → Key?
Controls how one widget replaces another widget in the tree.
finalinherited
onEndSession → VoidCallback?
Optional action callbacks surfaced as buttons. When non-null the screen pops itself first, then invokes the callback (so the end-session dialog / workboard isn't stacked on top of details).
final
onViewTasks → VoidCallback?
final
pauseCount → int
How many times the app was backgrounded this session.
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
screenViews → int
Live screen-view (navigation) count.
final
startedAt → DateTime
When the active session started.
final
taps → int
Live tap count.
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, int wrapWidth = 65}) → 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