/* * This file is part of Stack Wallet. * * Copyright (c) 2023 Cypher Stack * All Rights Reserved. * The code is distributed under GPLv3 license, see LICENSE file for details. * Generated by Cypher Stack on 2023-05-26 * */ import 'package:flutter/material.dart'; import '../../themes/stack_colors.dart'; import '../expandable.dart'; import 'table_view_cell.dart'; class TableViewRow extends StatefulWidget { const TableViewRow({ super.key, required this.cells, required this.expandingChild, this.decoration, this.onExpandChanged, this.expandOverride, this.padding = const EdgeInsets.all(0), this.spacing = 0.0, this.crossAxisAlignment = CrossAxisAlignment.center, }); final List cells; final Widget? expandingChild; final BoxDecoration? decoration; final void Function(ExpandableState)? onExpandChanged; final VoidCallback? expandOverride; final EdgeInsetsGeometry padding; final double spacing; final CrossAxisAlignment crossAxisAlignment; @override State createState() => _TableViewRowState(); } class _TableViewRowState extends State { bool _hovering = false; @override Widget build(BuildContext context) { debugPrint("BUILD: $runtimeType"); return Container( decoration: !_hovering ? widget.decoration : widget.decoration?.copyWith( boxShadow: [ Theme.of(context).extension()!.standardBoxShadow, Theme.of(context).extension()!.standardBoxShadow, ], ), child: widget.expandingChild == null ? MouseRegion( onEnter: (_) { setState(() { _hovering = true; }); }, onExit: (_) { setState(() { _hovering = false; }); }, child: Padding( padding: widget.padding, child: Row( crossAxisAlignment: widget.crossAxisAlignment, children: [ for (int i = 0; i < widget.cells.length; i++) ...[ if (i != 0 && i != widget.cells.length) SizedBox( width: widget.spacing, ), Expanded( flex: widget.cells[i].flex, child: widget.cells[i], ), ], ], ), ), ) : Expandable( expandOverride: widget.expandOverride, onExpandChanged: widget.onExpandChanged, header: MouseRegion( onEnter: (_) { setState(() { _hovering = true; }); }, onExit: (_) { setState(() { _hovering = false; }); }, child: Padding( padding: widget.padding, child: Row( children: [ for (int i = 0; i < widget.cells.length; i++) ...[ if (i != 0 && i != widget.cells.length) SizedBox( width: widget.spacing, ), Expanded( flex: widget.cells[i].flex, child: widget.cells[i], ), ], ], ), ), ), body: Column( children: [ Container( color: Theme.of(context) .extension()! .buttonBackSecondary, width: double.infinity, height: 1, ), widget.expandingChild!, ], ), ), ); } }