diff --git a/lib/pangea/space_analytics/space_analytics_view.dart b/lib/pangea/space_analytics/space_analytics_view.dart index 8b8777e3b..6b9e9acf9 100644 --- a/lib/pangea/space_analytics/space_analytics_view.dart +++ b/lib/pangea/space_analytics/space_analytics_view.dart @@ -39,120 +39,128 @@ class SpaceAnalyticsView extends StatelessWidget { child: Column( spacing: isColumnMode ? 24.0 : 12.0, children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - spacing: isColumnMode ? 12.0 : 4.0, - children: [ - _MenuButton( - text: L10n.of(context).requestAll, - icon: Symbols.approval_delegation, - onPressed: controller.requestAllAnalytics, - ), - if (controller.room != null && - controller.availableAnalyticsRooms.isNotEmpty) - _MenuButton( - text: L10n.of(context).download, - icon: Icons.download, - onPressed: () { - showDialog( - context: context, - builder: (context) => DownloadAnalyticsDialog( - space: controller.room!, - analyticsRooms: - controller.availableAnalyticsRooms, - ), - ); - }, - mini: !isColumnMode, - ), - ], - ), - Row( - spacing: isColumnMode ? 12.0 : 4.0, + LayoutBuilder( + builder: (context, constraints) { + final mini = constraints.maxWidth <= 550; + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - if (controller.lastUpdatedString != null) - Text( - L10n.of(context).lastUpdated( - controller.lastUpdatedString!, + Row( + spacing: !mini ? 12.0 : 4.0, + children: [ + _MenuButton( + text: L10n.of(context).requestAll, + icon: Symbols.approval_delegation, + onPressed: controller.requestAllAnalytics, + mini: mini, ), - textAlign: TextAlign.end, - style: TextStyle( - fontSize: isColumnMode ? 12.0 : 8.0, - color: theme.disabledColor, - ), - ), - _MenuButton( - text: L10n.of(context).refresh, - icon: Symbols.refresh, - onPressed: controller.refresh, - mini: !isColumnMode, - ), - DropdownButtonHideUnderline( - child: DropdownButton2( - customButton: Container( - height: isColumnMode ? 36.0 : 26.0, - decoration: BoxDecoration( - color: theme.colorScheme.primaryContainer, - borderRadius: BorderRadius.circular(40), + if (controller.room != null && + controller.availableAnalyticsRooms.isNotEmpty) + _MenuButton( + text: L10n.of(context).download, + icon: Icons.download, + onPressed: () { + showDialog( + context: context, + builder: (context) => DownloadAnalyticsDialog( + space: controller.room!, + analyticsRooms: + controller.availableAnalyticsRooms, + ), + ); + }, + mini: mini, ), - padding: EdgeInsets.symmetric( - horizontal: isColumnMode ? 8.0 : 4.0, - vertical: 4.0, + ], + ), + Row( + spacing: !mini ? 12.0 : 4.0, + children: [ + if (controller.lastUpdatedString != null) + Text( + L10n.of(context).lastUpdated( + controller.lastUpdatedString!, + ), + textAlign: TextAlign.end, + style: TextStyle( + fontSize: !mini ? 12.0 : 8.0, + color: theme.disabledColor, + ), ), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - if (controller.selectedLanguage != null) - Text( - controller.selectedLanguage! - .getDisplayName(context) ?? - controller - .selectedLanguage!.displayName, - style: TextStyle( + _MenuButton( + text: L10n.of(context).refresh, + icon: Symbols.refresh, + onPressed: controller.refresh, + mini: mini, + ), + DropdownButtonHideUnderline( + child: DropdownButton2( + customButton: Container( + height: !mini ? 36.0 : 26.0, + decoration: BoxDecoration( + color: theme.colorScheme.primaryContainer, + borderRadius: BorderRadius.circular(40), + ), + padding: EdgeInsets.symmetric( + horizontal: !mini ? 8.0 : 4.0, + vertical: 4.0, + ), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + if (controller.selectedLanguage != null) + Text( + controller.selectedLanguage! + .getDisplayName(context) ?? + controller + .selectedLanguage!.displayName, + style: TextStyle( + color: theme + .colorScheme.onPrimaryContainer, + fontSize: !mini ? 16.0 : 12.0, + ), + ), + Icon( + Icons.arrow_drop_down, color: theme.colorScheme.onPrimaryContainer, - fontSize: isColumnMode ? 16.0 : 12.0, + size: !mini ? 24.0 : 14.0, ), - ), - Icon( - Icons.arrow_drop_down, - color: theme.colorScheme.onPrimaryContainer, - size: isColumnMode ? 24.0 : 14.0, + ], ), - ], - ), - ), - value: controller.selectedLanguage, - items: controller.availableLanguages - .map( - (item) => DropdownMenuItem( - value: item, - child: DropdownTextButton( - text: item.getDisplayName(context) ?? - item.displayName, - isSelected: false, - ), + ), + value: controller.selectedLanguage, + items: controller.availableLanguages + .map( + (item) => DropdownMenuItem( + value: item, + child: DropdownTextButton( + text: item.getDisplayName(context) ?? + item.displayName, + isSelected: false, + ), + ), + ) + .toList(), + onChanged: controller.setSelectedLanguage, + buttonStyleData: ButtonStyleData( + // This is necessary for the ink response to match our customButton radius. + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(40), ), - ) - .toList(), - onChanged: controller.setSelectedLanguage, - buttonStyleData: ButtonStyleData( - // This is necessary for the ink response to match our customButton radius. - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(40), + ), + dropdownStyleData: const DropdownStyleData( + offset: Offset(-50, 0), + width: 150, + ), ), ), - dropdownStyleData: const DropdownStyleData( - offset: Offset(-50, 0), - width: 150, - ), - ), + ], ), ], - ), - ], + ); + }, ), controller.initialized ? Table( @@ -306,9 +314,8 @@ class _MenuButton extends StatelessWidget { @override Widget build(BuildContext context) { final theme = Theme.of(context); - final isColumnMode = FluffyThemes.isColumnMode(context); - final height = isColumnMode ? 36.0 : 26.0; + final height = !mini ? 36.0 : 26.0; return InkWell( borderRadius: BorderRadius.circular(40), @@ -321,14 +328,14 @@ class _MenuButton extends StatelessWidget { borderRadius: BorderRadius.circular(40), ), padding: EdgeInsets.symmetric( - horizontal: isColumnMode ? 8.0 : 4.0, + horizontal: !mini ? 8.0 : 4.0, vertical: 4.0, ), child: mini ? Icon( icon, color: theme.colorScheme.onPrimaryContainer, - size: isColumnMode ? 24.0 : 14.0, + size: !mini ? 24.0 : 14.0, ) : Row( spacing: 4.0, @@ -336,13 +343,13 @@ class _MenuButton extends StatelessWidget { Icon( icon, color: theme.colorScheme.onPrimaryContainer, - size: isColumnMode ? 24.0 : 14.0, + size: !mini ? 24.0 : 14.0, ), Text( text, style: TextStyle( color: theme.colorScheme.onPrimaryContainer, - fontSize: isColumnMode ? 16.0 : 12.0, + fontSize: !mini ? 16.0 : 12.0, ), ), ],