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