Skip to content

Instantly share code, notes, and snippets.

@clintdoriot
Created August 1, 2025 01:47
Show Gist options
  • Save clintdoriot/6aea8d1ba56eb7beb6e604848dced9fb to your computer and use it in GitHub Desktop.
Save clintdoriot/6aea8d1ba56eb7beb6e604848dced9fb to your computer and use it in GitHub Desktop.
Staged changes for mystage 4.20
diff --git a/dependencies/ff_commons/pubspec.yaml b/dependencies/ff_commons/pubspec.yaml
index bbf658e..160bdc5 100644
--- a/dependencies/ff_commons/pubspec.yaml
+++ b/dependencies/ff_commons/pubspec.yaml
@@ -3,7 +3,7 @@ description: FlutterFlow Commons Package
publish_to: 'none'
-version: 0.4.19+1
+version: 0.4.20+1
environment:
sdk: ">=3.0.0 <4.0.0"
diff --git a/dependencies/ff_theme/lib/flutter_flow/flutter_flow_theme.dart b/dependencies/ff_theme/lib/flutter_flow/flutter_flow_theme.dart
index 4cb7fc1..ea0d22c 100644
--- a/dependencies/ff_theme/lib/flutter_flow/flutter_flow_theme.dart
+++ b/dependencies/ff_theme/lib/flutter_flow/flutter_flow_theme.dart
@@ -26,6 +26,10 @@ abstract class FlutterFlowTheme {
? _prefs?.remove(kThemeModeKey)
: _prefs?.setBool(kThemeModeKey, mode == ThemeMode.dark);
+ static const double minTextScaleFactor = 1.0;
+ static const double maxTextScaleFactor = 1.0;
+ static const double defaultTextScaleFactor = 1.0;
+
static FlutterFlowTheme of(BuildContext context) {
return Theme.of(context).brightness == Brightness.dark
? DarkModeTheme()
diff --git a/dependencies/ff_theme/pubspec.yaml b/dependencies/ff_theme/pubspec.yaml
index b69c85d..205d98d 100644
--- a/dependencies/ff_theme/pubspec.yaml
+++ b/dependencies/ff_theme/pubspec.yaml
@@ -3,7 +3,7 @@ description: FlutterFlow Theme Package
publish_to: 'none'
-version: 0.4.19+1
+version: 0.4.20+1
environment:
sdk: ">=3.0.0 <4.0.0"
diff --git a/lib/components/app_bar_text_model.dart b/lib/components/app_bar_text_model.dart
new file mode 100644
index 0000000..253183c
--- /dev/null
+++ b/lib/components/app_bar_text_model.dart
@@ -0,0 +1,11 @@
+import '/flutter_flow/flutter_flow_util.dart';
+import 'app_bar_text_widget.dart' show AppBarTextWidget;
+import 'package:flutter/material.dart';
+
+class AppBarTextModel extends FlutterFlowModel<AppBarTextWidget> {
+ @override
+ void initState(BuildContext context) {}
+
+ @override
+ void dispose() {}
+}
diff --git a/lib/components/app_bar_text_widget.dart b/lib/components/app_bar_text_widget.dart
new file mode 100644
index 0000000..11ccb06
--- /dev/null
+++ b/lib/components/app_bar_text_widget.dart
@@ -0,0 +1,102 @@
+import '/flutter_flow/flutter_flow_util.dart';
+import 'package:ff_theme/flutter_flow/flutter_flow_theme.dart';
+import 'package:flutter/material.dart';
+import 'package:google_fonts/google_fonts.dart';
+import 'app_bar_text_model.dart';
+export 'app_bar_text_model.dart';
+
+class AppBarTextWidget extends StatefulWidget {
+ const AppBarTextWidget({
+ super.key,
+ this.text,
+ int? maxCharacters,
+ int? fontSize,
+ bool? isBold,
+ }) : this.maxCharacters = maxCharacters ?? 24,
+ this.fontSize = fontSize ?? 14,
+ this.isBold = isBold ?? false;
+
+ final String? text;
+ final int maxCharacters;
+ final int fontSize;
+ final bool isBold;
+
+ @override
+ State<AppBarTextWidget> createState() => _AppBarTextWidgetState();
+}
+
+class _AppBarTextWidgetState extends State<AppBarTextWidget> {
+ late AppBarTextModel _model;
+
+ @override
+ void setState(VoidCallback callback) {
+ super.setState(callback);
+ _model.onUpdate();
+ }
+
+ @override
+ void initState() {
+ super.initState();
+ _model = createModel(context, () => AppBarTextModel());
+
+ WidgetsBinding.instance.addPostFrameCallback((_) => safeSetState(() {}));
+ }
+
+ @override
+ void dispose() {
+ _model.maybeDispose();
+
+ super.dispose();
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return Builder(
+ builder: (context) {
+ if (widget.isBold) {
+ return ClipRRect(
+ child: Container(
+ decoration: BoxDecoration(),
+ child: Text(
+ widget.text!.maybeHandleOverflow(
+ maxChars: widget.maxCharacters,
+ ),
+ maxLines: 1,
+ style: FlutterFlowTheme.of(context).bodyMedium.override(
+ font: GoogleFonts.poppins(
+ fontWeight: FontWeight.w800,
+ fontStyle:
+ FlutterFlowTheme.of(context).bodyMedium.fontStyle,
+ ),
+ fontSize: widget.fontSize.toDouble(),
+ letterSpacing: 0.0,
+ fontWeight: FontWeight.w800,
+ fontStyle:
+ FlutterFlowTheme.of(context).bodyMedium.fontStyle,
+ ),
+ ),
+ ),
+ );
+ } else {
+ return Text(
+ 'test ${widget.text}'.maybeHandleOverflow(
+ maxChars: widget.maxCharacters,
+ ),
+ maxLines: 1,
+ style: FlutterFlowTheme.of(context).bodyMedium.override(
+ font: GoogleFonts.poppins(
+ fontWeight: FontWeight.w500,
+ fontStyle:
+ FlutterFlowTheme.of(context).bodyMedium.fontStyle,
+ ),
+ fontSize: widget.fontSize.toDouble(),
+ letterSpacing: 0.0,
+ fontWeight: FontWeight.w500,
+ fontStyle: FlutterFlowTheme.of(context).bodyMedium.fontStyle,
+ ),
+ );
+ }
+ },
+ );
+ }
+}
diff --git a/lib/custom_code/widgets/tile_image_widget.dart b/lib/custom_code/widgets/tile_image_widget.dart
index d8f08d4..a3d7da5 100644
--- a/lib/custom_code/widgets/tile_image_widget.dart
+++ b/lib/custom_code/widgets/tile_image_widget.dart
@@ -26,13 +26,13 @@ import 'dart:math' as math;
class TileImageWidget extends StatefulWidget {
const TileImageWidget({
super.key,
- this.width, // FlutterFlow-required, but overridden
- this.height, // FlutterFlow-required, but overridden
+ this.width,
+ this.height,
this.imageUrl,
});
- final double? width; // FlutterFlow-provided width (overridden)
- final double? height; // FlutterFlow-provided height (overridden)
+ final double? width;
+ final double? height;
final String? imageUrl;
@override
@@ -40,7 +40,7 @@ class TileImageWidget extends StatefulWidget {
}
class _TileImageWidgetState extends State<TileImageWidget> {
- double? _imageAspectRatio; // Dynamically calculated aspect ratio
+ double? _imageAspectRatio;
@override
void initState() {
@@ -55,11 +55,13 @@ class _TileImageWidgetState extends State<TileImageWidget> {
.resolve(ImageConfiguration())
.addListener(
ImageStreamListener((ImageInfo info, bool _) {
- final imageWidth = info.image.width.toDouble();
- final imageHeight = info.image.height.toDouble();
- setState(() {
- _imageAspectRatio = imageWidth / imageHeight;
- });
+ if (mounted) {
+ final imageWidth = info.image.width.toDouble();
+ final imageHeight = info.image.height.toDouble();
+ setState(() {
+ _imageAspectRatio = imageWidth / imageHeight;
+ });
+ }
}),
);
}
@@ -67,171 +69,146 @@ class _TileImageWidgetState extends State<TileImageWidget> {
@override
Widget build(BuildContext context) {
- // Get the parent container width
- double containerWidth = MediaQuery.of(context).size.width;
+ if (widget.imageUrl == null || widget.imageUrl!.isEmpty) {
+ return Center(child: Text("No image provided"));
+ }
- // Set container height as 16:9 ratio of the parent container width
- double containerHeight = containerWidth * 9 / 16;
+ return LayoutBuilder(
+ builder: (context, constraints) {
+ double containerWidth = constraints.maxWidth;
+ // double containerHeight = containerWidth * 9 / 16;
+ double containerHeight = constraints.maxHeight;
- // Fallback to square aspect ratio if the image aspect ratio is not yet loaded
- double imageAspectRatio = _imageAspectRatio ?? 1.0;
+ if (_imageAspectRatio == null) {
+ return SizedBox(
+ width: containerWidth,
+ height: containerHeight,
+ child: Center(child: CircularProgressIndicator()),
+ );
+ }
- // Calculate center image dimensions (fills height, maintains aspect ratio)
- double centerImageHeight = containerHeight;
- double centerImageWidth = centerImageHeight * imageAspectRatio;
+ double imageAspectRatio = _imageAspectRatio!;
+ double centerImageHeight = containerHeight;
+ double centerImageWidth = centerImageHeight * imageAspectRatio;
- // Calculate positions for left and right mirrored images
- double sliverWidth = (containerWidth - centerImageWidth) / 2 + 1;
+ // Determine if the "wings" are needed
+ if (centerImageWidth < containerWidth) {
+ // CASE 1: Image is taller than the container, so build the wings.
+ double centerImageLeft = (containerWidth - centerImageWidth) / 2;
- // Determine gradient colors based on the current theme
- bool isDarkMode = Theme.of(context).brightness == Brightness.dark;
- Color gradientStartColor = isDarkMode
- ? Colors.black.withOpacity(0.4)
- : Colors.white.withOpacity(0.4);
- Color gradientEndColor = isDarkMode
- ? Colors.black.withOpacity(0.90)
- : Colors.white.withOpacity(0.90);
-/*
- Color bottomGradientStart = isDarkMode
- ? Colors.black.withOpacity(0.0)
- : Colors.white.withOpacity(0.0);
- Color bottomGradientEnd = isDarkMode
- ? Colors.black.withOpacity(0.95)
- : Colors.white.withOpacity(0.95);
-*/
- return SizedBox(
- width: containerWidth,
- height: containerHeight,
- child: widget.imageUrl == null || widget.imageUrl!.isEmpty
- ? Center(child: Text("No image provided"))
- : _imageAspectRatio == null
- ? Center(
- child: CircularProgressIndicator(),
- ) // Show a loader while dimensions load
- : Stack(
- children: [
- // Left mirrored image with blur and overlay
- Positioned(
- left: 0,
- top: 0,
- width: sliverWidth,
- height: containerHeight,
- child: ClipRect(
- child: Stack(
- fit: StackFit.expand,
- children: [
- Transform(
- alignment: Alignment.center,
- transform: Matrix4.rotationY(math.pi),
- child: Image.network(
- widget.imageUrl!,
- fit: BoxFit.cover,
- alignment: Alignment.centerLeft,
- ),
- ),
- BackdropFilter(
- filter:
- ImageFilter.blur(sigmaX: 0.5, sigmaY: 0.5),
- child: Container(
- color: Colors.transparent,
- ),
- ),
- Opacity(
- opacity: 1.0,
- child: Container(
- decoration: BoxDecoration(
- gradient: LinearGradient(
- colors: [
- gradientStartColor,
- gradientEndColor,
- ],
- begin: Alignment.centerRight,
- end: Alignment.centerLeft,
- ),
- ),
- ),
- ),
- ],
- ),
- ),
- ),
- // Center image (no blur)
- Positioned(
- left: sliverWidth,
- top: 0,
- width: centerImageWidth,
- height: centerImageHeight,
- child: Image.network(
- widget.imageUrl!,
- fit: BoxFit.contain,
- ),
- ),
- // Right mirrored image with blur and overlay
- Positioned(
- left: sliverWidth + centerImageWidth,
- top: 0,
- width: sliverWidth,
- height: containerHeight,
- child: ClipRect(
- child: Stack(
- fit: StackFit.expand,
- children: [
- Transform(
- alignment: Alignment.center,
- transform: Matrix4.rotationY(math.pi),
- child: Image.network(
- widget.imageUrl!,
- fit: BoxFit.cover,
- alignment: Alignment.centerRight,
- ),
- ),
- BackdropFilter(
- filter:
- ImageFilter.blur(sigmaX: 0.5, sigmaY: 0.5),
- child: Container(
- color: Colors.transparent,
- ),
- ),
- Opacity(
- opacity: 1.0,
- child: Container(
- decoration: BoxDecoration(
- gradient: LinearGradient(
- colors: [
- gradientEndColor,
- gradientStartColor,
- ],
- begin: Alignment.centerRight,
- end: Alignment.centerLeft,
- ),
- ),
- ),
- ),
- ],
- ),
- ),
- ),
- // Bottom overlay gradient
- /*Positioned(
- left: 0,
- bottom: 0,
- width: containerWidth,
- height: 0, // Gradient height
- child: Container(
- decoration: BoxDecoration(
- gradient: LinearGradient(
- colors: [
- bottomGradientStart,
- bottomGradientEnd,
- ],
- begin: Alignment.topCenter,
- end: Alignment.bottomCenter,
+ bool isDarkMode = Theme.of(context).brightness == Brightness.dark;
+ Color gradientStartColor = isDarkMode
+ ? Colors.black.withOpacity(0.4)
+ : Colors.white.withOpacity(0.4);
+ Color gradientEndColor = isDarkMode
+ ? Colors.black.withOpacity(0.90)
+ : Colors.white.withOpacity(0.90);
+
+ return SizedBox(
+ width: containerWidth,
+ height: containerHeight,
+ child: Stack(
+ children: [
+ // Left mirrored image with blur and overlay
+ Positioned(
+ left: 0,
+ top: 0,
+ width: centerImageLeft + 1,
+ height: containerHeight,
+ child: ClipRect(
+ child: Stack(
+ fit: StackFit.expand,
+ children: [
+ Transform(
+ alignment: Alignment.center,
+ transform: Matrix4.rotationY(math.pi),
+ child: Image.network(
+ widget.imageUrl!,
+ fit: BoxFit.cover,
+ alignment: Alignment.centerLeft,
),
),
- ),
- ),*/
- ],
+ BackdropFilter(
+ filter: ImageFilter.blur(sigmaX: 0.5, sigmaY: 0.5),
+ child: Container(color: Colors.transparent),
+ ),
+ Container(
+ decoration: BoxDecoration(
+ gradient: LinearGradient(
+ colors: [gradientStartColor, gradientEndColor],
+ begin: Alignment.centerRight,
+ end: Alignment.centerLeft,
+ ),
+ ),
+ ),
+ ],
+ ),
+ ),
),
+ // Center image (no blur)
+ Positioned(
+ left: centerImageLeft,
+ top: 0,
+ width: centerImageWidth,
+ height: centerImageHeight,
+ child: Image.network(
+ widget.imageUrl!,
+ fit: BoxFit.contain,
+ ),
+ ),
+ // Right mirrored image with blur and overlay
+ Positioned(
+ right: 0,
+ top: 0,
+ width: centerImageLeft + 1,
+ height: containerHeight,
+ child: ClipRect(
+ child: Stack(
+ fit: StackFit.expand,
+ children: [
+ Transform(
+ alignment: Alignment.center,
+ transform: Matrix4.rotationY(math.pi),
+ child: Image.network(
+ widget.imageUrl!,
+ fit: BoxFit.cover,
+ alignment: Alignment.centerRight,
+ ),
+ ),
+ BackdropFilter(
+ filter: ImageFilter.blur(sigmaX: 0.5, sigmaY: 0.5),
+ child: Container(color: Colors.transparent),
+ ),
+ Container(
+ decoration: BoxDecoration(
+ gradient: LinearGradient(
+ colors: [gradientEndColor, gradientStartColor],
+ begin: Alignment.centerRight,
+ end: Alignment.centerLeft,
+ ),
+ ),
+ ),
+ ],
+ ),
+ ),
+ ),
+ ],
+ ),
+ );
+ } else {
+ // CASE 2: Image is wider than the container, so just fill the space.
+ return SizedBox(
+ width: containerWidth,
+ height: containerHeight,
+ child: Image.network(
+ widget.imageUrl!,
+ fit: BoxFit.cover, // Fills, centers, and crops the image
+ width: containerWidth,
+ height: containerHeight,
+ ),
+ );
+ }
+ },
);
}
}
diff --git a/lib/events/event_details/event_details_model.dart b/lib/events/event_details/event_details_model.dart
index 968c68a..c57b1dd 100644
--- a/lib/events/event_details/event_details_model.dart
+++ b/lib/events/event_details/event_details_model.dart
@@ -1,5 +1,6 @@
import '/events/event_interest_widget_details/event_interest_widget_details_widget.dart';
import '/flutter_flow/flutter_flow_util.dart';
+import '/social_media/profiles/profile_picture/profile_picture_widget.dart';
import "package:mystage_base_lib_p8jvwd/backend/backend.dart"
as mystage_base_lib_p8jvwd_backend;
import '/index.dart';
@@ -27,17 +28,29 @@ class EventDetailsModel extends FlutterFlowModel<EventDetailsWidget> {
mystage_base_lib_p8jvwd_backend.EvtArtistsRecord? evtArtistDoc;
// Stores action output result for [Backend Call - Read Document] action in EventDetails widget.
mystage_base_lib_p8jvwd_backend.EvtVenuesRecord? evtVenueDoc;
+ // State field(s) for PageView widget.
+ PageController? pageViewController;
+
+ int get pageViewCurrentIndex => pageViewController != null &&
+ pageViewController!.hasClients &&
+ pageViewController!.page != null
+ ? pageViewController!.page!.round()
+ : 0;
// Model for eventInterestWidgetDetails component.
late EventInterestWidgetDetailsModel eventInterestWidgetDetailsModel;
+ // Model for profilePicture component.
+ late ProfilePictureModel profilePictureModel;
@override
void initState(BuildContext context) {
eventInterestWidgetDetailsModel =
createModel(context, () => EventInterestWidgetDetailsModel());
+ profilePictureModel = createModel(context, () => ProfilePictureModel());
}
@override
void dispose() {
eventInterestWidgetDetailsModel.dispose();
+ profilePictureModel.dispose();
}
}
diff --git a/lib/events/event_details/event_details_widget.dart b/lib/events/event_details/event_details_widget.dart
index 1829a9c..bfd7508 100644
--- a/lib/events/event_details/event_details_widget.dart
+++ b/lib/events/event_details/event_details_widget.dart
@@ -3,10 +3,14 @@ import '/common_components/pillbox_standard/pillbox_standard_widget.dart';
import '/events/event_interest_widget_details/event_interest_widget_details_widget.dart';
import '/flutter_flow/flutter_flow_icon_button.dart';
import '/flutter_flow/flutter_flow_util.dart';
+import '/social_media/profiles/profile_picture/profile_picture_widget.dart';
import "package:mystage_base_lib_p8jvwd/backend/backend.dart"
as mystage_base_lib_p8jvwd_backend;
+import '/custom_code/widgets/index.dart' as custom_widgets;
import '/flutter_flow/custom_functions.dart' as functions;
import '/index.dart';
+import 'package:smooth_page_indicator/smooth_page_indicator.dart'
+ as smooth_page_indicator;
import 'package:cached_network_image/cached_network_image.dart';
import 'package:ff_theme/flutter_flow/flutter_flow_theme.dart';
import 'package:flutter/material.dart';
@@ -127,78 +131,61 @@ class _EventDetailsWidgetState extends State<EventDetailsWidget> {
backgroundColor: FlutterFlowTheme.of(context).primaryBackground,
iconTheme: IconThemeData(color: Color(0xFFA23E3E)),
automaticallyImplyLeading: false,
- leading: InkWell(
- splashColor: Colors.transparent,
- focusColor: Colors.transparent,
- hoverColor: Colors.transparent,
- highlightColor: Colors.transparent,
- onTap: () async {
- context.pop();
- },
- child: Icon(
- Icons.arrow_back_ios,
- color: FlutterFlowTheme.of(context).primaryText,
- size: 25.0,
+ leading: Padding(
+ padding: EdgeInsetsDirectional.fromSTEB(0.0, 8.0, 0.0, 0.0),
+ child: InkWell(
+ splashColor: Colors.transparent,
+ focusColor: Colors.transparent,
+ hoverColor: Colors.transparent,
+ highlightColor: Colors.transparent,
+ onTap: () async {
+ context.pop();
+ },
+ child: Icon(
+ Icons.arrow_back_ios,
+ color: FlutterFlowTheme.of(context).primaryText,
+ size: 25.0,
+ ),
),
),
- title: Row(
- mainAxisSize: MainAxisSize.max,
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- Row(
- mainAxisSize: MainAxisSize.max,
- children: [
- Expanded(
- child: Text(
- eventDetailsEvtPerformancesRecord.name != ''
- ? eventDetailsEvtPerformancesRecord.name
- : '${_model.evtArtistDoc?.name} @ ${_model.evtVenueDoc?.name}'
- .maybeHandleOverflow(
- maxChars: 1,
- ),
- maxLines: 1,
- style: FlutterFlowTheme.of(context).titleSmall.override(
- font: GoogleFonts.poppins(
- fontWeight: FlutterFlowTheme.of(context)
- .titleSmall
- .fontWeight,
- fontStyle: FlutterFlowTheme.of(context)
- .titleSmall
- .fontStyle,
- ),
- letterSpacing: 0.0,
- fontWeight: FlutterFlowTheme.of(context)
- .titleSmall
- .fontWeight,
- fontStyle: FlutterFlowTheme.of(context)
- .titleSmall
- .fontStyle,
- ),
- ),
- ),
- ],
- ),
- Align(
- alignment: AlignmentDirectional(1.0, 0.0),
- child: Padding(
- padding: EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 8.0),
- child: FlutterFlowIconButton(
- borderWidth: 1.0,
- buttonSize: 40.0,
- icon: Icon(
- Icons.ios_share,
- color: FlutterFlowTheme.of(context).primaryText,
- size: 25.0,
- ),
- onPressed: () async {},
- ),
+ title: Padding(
+ padding: EdgeInsetsDirectional.fromSTEB(0.0, 8.0, 0.0, 0.0),
+ child: Row(
+ mainAxisSize: MainAxisSize.max,
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Text(
+ 'Event Details',
+ style: FlutterFlowTheme.of(context).titleMedium.override(
+ font: GoogleFonts.poppins(
+ fontWeight: FontWeight.bold,
+ fontStyle: FlutterFlowTheme.of(context)
+ .titleMedium
+ .fontStyle,
+ ),
+ letterSpacing: 0.0,
+ fontWeight: FontWeight.bold,
+ fontStyle: FlutterFlowTheme.of(context)
+ .titleMedium
+ .fontStyle,
+ ),
),
- ),
- ],
+ FlutterFlowIconButton(
+ borderRadius: 30.0,
+ buttonSize: 40.0,
+ fillColor: FlutterFlowTheme.of(context).secondaryBackground,
+ icon: Icon(
+ Icons.ios_share,
+ color: FlutterFlowTheme.of(context).primaryText,
+ size: 22.0,
+ ),
+ onPressed: () async {},
+ ),
+ ],
+ ),
),
actions: [],
centerTitle: false,
- elevation: 0.0,
),
body: SafeArea(
top: true,
@@ -208,40 +195,140 @@ class _EventDetailsWidgetState extends State<EventDetailsWidget> {
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
+ Divider(
+ thickness: 2.0,
+ color: FlutterFlowTheme.of(context).secondaryBackground,
+ ),
Expanded(
child: SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
- Container(
- height: () {
- if (eventDetailsEvtPerformancesRecord
- .photos.firstOrNull ==
- null ||
- eventDetailsEvtPerformancesRecord
- .photos.firstOrNull ==
- '') {
- return 100.0;
- } else if (eventDetailsEvtPerformancesRecord
+ if (eventDetailsEvtPerformancesRecord
.photos.firstOrNull !=
- _model.evtArtistDoc?.photos.firstOrNull) {
- return 400.0;
- } else {
- return 350.0;
- }
- }(),
- child: Stack(
- alignment: AlignmentDirectional(-1.0, 1.0),
+ null &&
+ eventDetailsEvtPerformancesRecord
+ .photos.firstOrNull !=
+ '')
+ Padding(
+ padding: EdgeInsetsDirectional.fromSTEB(
+ 12.0, 4.0, 12.0, 12.0),
+ child: ClipRRect(
+ borderRadius: BorderRadius.circular(18.0),
+ child: Container(
+ width: double.infinity,
+ decoration: BoxDecoration(
+ color: FlutterFlowTheme.of(context)
+ .secondaryBackground,
+ borderRadius: BorderRadius.circular(18.0),
+ ),
+ child: Builder(
+ builder: (context) {
+ final photo =
+ eventDetailsEvtPerformancesRecord
+ .photos
+ .map((e) => e)
+ .toList();
+
+ return Container(
+ height: 300.0,
+ child: Stack(
+ children: [
+ PageView.builder(
+ controller:
+ _model.pageViewController ??=
+ PageController(
+ initialPage: max(
+ 0,
+ min(
+ 0,
+ photo.length -
+ 1))),
+ scrollDirection: Axis.horizontal,
+ itemCount: photo.length,
+ itemBuilder:
+ (context, photoIndex) {
+ final photoItem =
+ photo[photoIndex];
+ return custom_widgets
+ .TileImageWidget(
+ width: 100.0,
+ height: 100.0,
+ imageUrl:
+ valueOrDefault<String>(
+ photoItem,
+ 'https://picsum.photos/seed/227/600',
+ ),
+ );
+ },
+ ),
+ Align(
+ alignment: AlignmentDirectional(
+ 0.0, 1.0),
+ child: Padding(
+ padding: EdgeInsetsDirectional
+ .fromSTEB(
+ 0.0, 0.0, 0.0, 16.0),
+ child: smooth_page_indicator
+ .SmoothPageIndicator(
+ controller: _model
+ .pageViewController ??=
+ PageController(
+ initialPage: max(
+ 0,
+ min(
+ 0,
+ photo.length -
+ 1))),
+ count: photo.length,
+ axisDirection:
+ Axis.horizontal,
+ onDotClicked: (i) async {
+ await _model
+ .pageViewController!
+ .animateToPage(
+ i,
+ duration: Duration(
+ milliseconds: 500),
+ curve: Curves.ease,
+ );
+ safeSetState(() {});
+ },
+ effect: smooth_page_indicator
+ .SlideEffect(
+ spacing: 8.0,
+ radius: 8.0,
+ dotWidth: 8.0,
+ dotHeight: 8.0,
+ dotColor:
+ FlutterFlowTheme.of(
+ context)
+ .tertiary,
+ activeDotColor:
+ FlutterFlowTheme.of(
+ context)
+ .primaryBackground,
+ paintStyle:
+ PaintingStyle.fill,
+ ),
+ ),
+ ),
+ ),
+ ],
+ ),
+ );
+ },
+ ),
+ ),
+ ),
+ ),
+ if (false)
+ Stack(
children: [
- if (eventDetailsEvtPerformancesRecord
- .photos.firstOrNull !=
- null &&
- eventDetailsEvtPerformancesRecord
- .photos.firstOrNull !=
- '')
+ if (false)
Align(
- alignment: AlignmentDirectional(0.0, -1.0),
+ alignment: AlignmentDirectional(0.0, -1.39),
child: CachedNetworkImage(
fadeInDuration:
Duration(milliseconds: 500),
@@ -324,516 +411,336 @@ class _EventDetailsWidgetState extends State<EventDetailsWidget> {
),
],
),
- ),
Padding(
padding: EdgeInsetsDirectional.fromSTEB(
- 24.0, 24.0, 24.0, 24.0),
+ 24.0, 0.0, 24.0, 24.0),
child: Column(
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
- Container(
- decoration: BoxDecoration(),
- child: Visibility(
- visible:
- _model.evtArtistDoc?.reference != null,
- child: InkWell(
- splashColor: Colors.transparent,
- focusColor: Colors.transparent,
- hoverColor: Colors.transparent,
- highlightColor: Colors.transparent,
- onTap: () async {
- if (eventDetailsEvtPerformancesRecord
- .artistId !=
- '') {
- context.pushNamed(
- ProfileDisplayArtistWidget
- .routeName,
- pathParameters: {
- 'artistRef': serializeParam(
- functions.stringtoEvtArtistsDocRef(
- eventDetailsEvtPerformancesRecord
- .artistId),
- ParamType.DocumentReference,
- ),
- }.withoutNulls,
- );
- }
- },
- child: Row(
- mainAxisSize: MainAxisSize.max,
- crossAxisAlignment:
- CrossAxisAlignment.start,
- children: [
- Expanded(
- child: Column(
- mainAxisSize: MainAxisSize.max,
- crossAxisAlignment:
- CrossAxisAlignment.stretch,
- children: [
- Text(
- valueOrDefault<String>(
- _model.evtArtistDoc?.name,
- 'Artist',
- ),
- style: FlutterFlowTheme.of(
- context)
- .titleMedium
- .override(
- font:
- GoogleFonts.poppins(
- fontWeight:
- FlutterFlowTheme.of(
- context)
- .titleMedium
- .fontWeight,
- fontStyle:
- FlutterFlowTheme.of(
- context)
- .titleMedium
- .fontStyle,
- ),
- letterSpacing: 0.0,
- fontWeight:
- FlutterFlowTheme.of(
- context)
- .titleMedium
- .fontWeight,
- fontStyle:
- FlutterFlowTheme.of(
- context)
- .titleMedium
- .fontStyle,
- ),
- ),
- Container(
- constraints: BoxConstraints(
- maxHeight: 34.0,
- ),
- decoration: BoxDecoration(),
- child: Visibility(
- visible: _model.evtArtistDoc
- ?.genres !=
- null &&
- (_model.evtArtistDoc
- ?.genres)!
- .isNotEmpty,
- child: Padding(
- padding:
- EdgeInsetsDirectional
- .fromSTEB(
- 0.0,
- 4.0,
- 0.0,
- 0.0),
- child: Builder(
- builder: (context) {
- final genreList = (_model
- .evtArtistDoc
- ?.genres
- .take(5)
- .toList()
- .toList() ??
- [])
- .take(3)
- .toList();
-
- return ListView
- .builder(
- padding:
- EdgeInsets.zero,
- shrinkWrap: true,
- scrollDirection:
- Axis.horizontal,
- itemCount: genreList
- .length,
- itemBuilder: (context,
- genreListIndex) {
- final genreListItem =
- genreList[
- genreListIndex];
- return PillboxStandardWidget(
- key: Key(
- 'Keygsa_${genreListIndex}_of_${genreList.length}'),
- pillText:
- genreListItem,
- active: true,
- );
- },
- );
- },
- ),
- ),
- ),
- ),
- ],
- ),
- ),
- if (eventDetailsEvtPerformancesRecord
- .artistId !=
- '')
- Padding(
- padding: EdgeInsetsDirectional
- .fromSTEB(
- 0.0, 4.0, 12.0, 0.0),
- child: Icon(
- Icons.arrow_forward_ios_rounded,
- color:
- FlutterFlowTheme.of(context)
- .secondaryText,
- size: 25.0,
- ),
- ),
- ].divide(SizedBox(width: 12.0)),
- ),
- ),
- ),
- ),
- if (_model.evtVenueDoc?.reference != null)
- Container(
- decoration: BoxDecoration(),
- child: InkWell(
- splashColor: Colors.transparent,
- focusColor: Colors.transparent,
- hoverColor: Colors.transparent,
- highlightColor: Colors.transparent,
- onTap: () async {
- context.pushNamed(
- ProfileDisplayVenueWidget.routeName,
- pathParameters: {
- 'venueRef': serializeParam(
- functions.stringtoEvtVenuesDocRef(
- eventDetailsEvtPerformancesRecord
- .venueId),
- ParamType.DocumentReference,
- ),
- }.withoutNulls,
- );
- },
- child: Row(
- mainAxisSize: MainAxisSize.max,
- crossAxisAlignment:
- CrossAxisAlignment.start,
- children: [
- Container(
- width: 34.0,
- decoration: BoxDecoration(),
- child: Align(
- alignment: AlignmentDirectional(
- -1.0, 0.0),
- child: Padding(
- padding: EdgeInsetsDirectional
- .fromSTEB(
- 0.0, 2.0, 0.0, 0.0),
- child: Icon(
- FFIcons.kmapPin,
- color: FlutterFlowTheme.of(
- context)
- .primaryText,
- size: 30.0,
- ),
- ),
- ),
- ),
- Expanded(
- child: Column(
- mainAxisSize: MainAxisSize.max,
- crossAxisAlignment:
- CrossAxisAlignment.stretch,
- children: [
- Text(
- valueOrDefault<String>(
- _model.evtVenueDoc?.name,
- 'Venue',
- ),
- style: FlutterFlowTheme.of(
- context)
- .titleSmall
- .override(
- font:
- GoogleFonts.poppins(
- fontWeight:
- FontWeight.w600,
- fontStyle:
- FlutterFlowTheme.of(
- context)
- .titleSmall
- .fontStyle,
- ),
- letterSpacing: 0.0,
- fontWeight:
- FontWeight.w600,
- fontStyle:
- FlutterFlowTheme.of(
- context)
- .titleSmall
- .fontStyle,
- ),
- ),
- Text(
- '${_model.evtVenueDoc?.address.city}, ${_model.evtVenueDoc?.address.region}',
- style: FlutterFlowTheme.of(
- context)
- .bodyMedium
- .override(
- font:
- GoogleFonts.poppins(
- fontWeight:
- FlutterFlowTheme.of(
- context)
- .bodyMedium
- .fontWeight,
- fontStyle:
- FlutterFlowTheme.of(
- context)
- .bodyMedium
- .fontStyle,
- ),
- letterSpacing: 0.0,
- fontWeight:
- FlutterFlowTheme.of(
- context)
- .bodyMedium
- .fontWeight,
- fontStyle:
- FlutterFlowTheme.of(
- context)
- .bodyMedium
- .fontStyle,
- ),
- ),
- InkWell(
- splashColor:
- Colors.transparent,
- focusColor:
- Colors.transparent,
- hoverColor:
- Colors.transparent,
- highlightColor:
- Colors.transparent,
- onTap: () async {
- var confirmDialogResponse =
- await showDialog<bool>(
- context: context,
- builder:
- (alertDialogContext) {
- return AlertDialog(
- title: Text(
- 'Open Maps'),
- content: Text(
- 'This will open an external application. Would you like to continue?'),
- actions: [
- TextButton(
- onPressed: () => Navigator.pop(
- alertDialogContext,
- false),
- child: Text(
- 'Cancel'),
- ),
- TextButton(
- onPressed: () => Navigator.pop(
- alertDialogContext,
- true),
- child: Text(
- 'Continue'),
- ),
- ],
- );
- },
- ) ??
- false;
- if (confirmDialogResponse) {
- await launchMap(
- location: _model
- .evtVenueDoc
- ?.location,
- title: '',
- );
- } else {
- Navigator.pop(context);
- }
- },
- child: Row(
- mainAxisSize:
- MainAxisSize.min,
- children: [
- Align(
- alignment:
- AlignmentDirectional(
- -1.0, 0.0),
- child: Text(
- '${functions.formatDistance(functions.calculateGeoDistanceMiles(currentUserLocationValue!, _model.evtVenueDoc!.location!))} miles'
- .maybeHandleOverflow(
- maxChars: 50,
- ),
- textAlign:
- TextAlign.end,
- maxLines: 2,
- style: FlutterFlowTheme
- .of(context)
- .bodyMedium
- .override(
- font: GoogleFonts
- .poppins(
- fontWeight: FlutterFlowTheme.of(
- context)
- .bodyMedium
- .fontWeight,
- fontStyle: FlutterFlowTheme.of(
- context)
- .bodyMedium
- .fontStyle,
- ),
- letterSpacing:
- 0.0,
- fontWeight: FlutterFlowTheme.of(
- context)
- .bodyMedium
- .fontWeight,
- fontStyle: FlutterFlowTheme.of(
- context)
- .bodyMedium
- .fontStyle,
- lineHeight: 2.5,
- ),
- ),
- ),
- Padding(
- padding:
- EdgeInsetsDirectional
- .fromSTEB(
- 8.0,
- 0.0,
- 0.0,
- 4.0),
- child: FaIcon(
- FontAwesomeIcons
- .externalLinkSquareAlt,
- color: FlutterFlowTheme
- .of(context)
- .primary,
- size: 18.0,
- ),
- ),
- ],
- ),
- ),
- ],
- ),
- ),
- Align(
- alignment:
- AlignmentDirectional(0.0, -1.0),
- child: Padding(
- padding: EdgeInsetsDirectional
- .fromSTEB(
- 12.0, 4.0, 12.0, 0.0),
- child: Icon(
- Icons.arrow_forward_ios_rounded,
- color:
- FlutterFlowTheme.of(context)
- .secondaryText,
- size: 25.0,
- ),
- ),
- ),
- ].divide(SizedBox(width: 4.0)),
- ),
- ),
- ),
Row(
mainAxisSize: MainAxisSize.max,
- crossAxisAlignment: CrossAxisAlignment.start,
+ mainAxisAlignment:
+ MainAxisAlignment.spaceBetween,
children: [
- Align(
- alignment: AlignmentDirectional(0.0, 0.0),
- child: Container(
- width: 34.0,
- decoration: BoxDecoration(),
- alignment:
- AlignmentDirectional(0.0, 0.0),
- child: Align(
- alignment:
- AlignmentDirectional(-1.0, 0.0),
- child: Padding(
- padding:
- EdgeInsetsDirectional.fromSTEB(
- 0.0, 2.0, 0.0, 0.0),
- child: FaIcon(
- FontAwesomeIcons.clock,
- color:
- FlutterFlowTheme.of(context)
- .primaryText,
- size: 28.0,
- ),
- ),
- ),
- ),
- ),
Expanded(
- child: Column(
- mainAxisSize: MainAxisSize.max,
- crossAxisAlignment:
- CrossAxisAlignment.stretch,
- children: [
- Text(
- dateTimeFormat(
- "MMM d, y",
- DateTime
- .fromMillisecondsSinceEpoch(
- valueOrDefault<int>(
- eventDetailsEvtPerformancesRecord
- .startTime
- ?.millisecondsSinceEpoch,
- 0,
- ))),
- style: FlutterFlowTheme.of(context)
- .titleSmall
- .override(
- font: GoogleFonts.poppins(
- fontWeight: FontWeight.w600,
+ child: Container(
+ decoration: BoxDecoration(),
+ child: Column(
+ mainAxisSize: MainAxisSize.max,
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ Text(
+ eventDetailsEvtPerformancesRecord
+ .name !=
+ ''
+ ? eventDetailsEvtPerformancesRecord
+ .name
+ : '${_model.evtArtistDoc?.name} @ ${_model.evtVenueDoc?.name}',
+ style: FlutterFlowTheme.of(
+ context)
+ .titleMedium
+ .override(
+ font: GoogleFonts.poppins(
+ fontWeight:
+ FontWeight.bold,
+ fontStyle:
+ FlutterFlowTheme.of(
+ context)
+ .titleMedium
+ .fontStyle,
+ ),
+ letterSpacing: 0.0,
+ fontWeight: FontWeight.bold,
fontStyle:
FlutterFlowTheme.of(
context)
- .titleSmall
+ .titleMedium
.fontStyle,
),
- letterSpacing: 0.0,
- fontWeight: FontWeight.w600,
+ ),
+ Text(
+ valueOrDefault<String>(
+ _model.evtVenueDoc?.name,
+ 'Venue',
+ ),
+ maxLines: 1,
+ style:
+ FlutterFlowTheme.of(context)
+ .labelMedium
+ .override(
+ font:
+ GoogleFonts.poppins(
+ fontWeight:
+ FlutterFlowTheme.of(
+ context)
+ .labelMedium
+ .fontWeight,
+ fontStyle:
+ FlutterFlowTheme.of(
+ context)
+ .labelMedium
+ .fontStyle,
+ ),
+ letterSpacing: 0.0,
+ fontWeight:
+ FlutterFlowTheme.of(
+ context)
+ .labelMedium
+ .fontWeight,
+ fontStyle:
+ FlutterFlowTheme.of(
+ context)
+ .labelMedium
+ .fontStyle,
+ ),
+ ),
+ ],
+ ),
+ ),
+ ),
+ wrapWithModel(
+ model: _model
+ .eventInterestWidgetDetailsModel,
+ updateCallback: () => safeSetState(() {}),
+ child: EventInterestWidgetDetailsWidget(
+ attendanceCount:
+ eventDetailsEvtPerformancesRecord
+ .numLikes,
+ eventDetails: false,
+ eventRef: widget.eventRef!,
+ eventTime:
+ eventDetailsEvtPerformancesRecord
+ .startTime!,
+ ),
+ ),
+ ],
+ ),
+ if (_model.evtArtistDoc?.genres != null &&
+ (_model.evtArtistDoc?.genres)!.isNotEmpty)
+ Container(
+ constraints: BoxConstraints(
+ maxHeight: 32.0,
+ ),
+ decoration: BoxDecoration(),
+ child: Builder(
+ builder: (context) {
+ final genreList = (_model
+ .evtArtistDoc?.genres
+ .take(5)
+ .toList()
+ .toList() ??
+ [])
+ .take(3)
+ .toList();
+
+ return ListView.builder(
+ padding: EdgeInsets.zero,
+ shrinkWrap: true,
+ scrollDirection: Axis.horizontal,
+ itemCount: genreList.length,
+ itemBuilder:
+ (context, genreListIndex) {
+ final genreListItem =
+ genreList[genreListIndex];
+ return PillboxStandardWidget(
+ key: Key(
+ 'Keygsa_${genreListIndex}_of_${genreList.length}'),
+ pillText: genreListItem,
+ active: true,
+ );
+ },
+ );
+ },
+ ),
+ ),
+ if (_model.evtArtistDoc?.reference != null)
+ Container(
+ decoration: BoxDecoration(),
+ child: Column(
+ mainAxisSize: MainAxisSize.max,
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ Text(
+ 'Featuring',
+ style: FlutterFlowTheme.of(context)
+ .titleSmall
+ .override(
+ font: GoogleFonts.poppins(
+ fontWeight: FontWeight.bold,
fontStyle:
FlutterFlowTheme.of(
context)
.titleSmall
.fontStyle,
),
- ),
- Text(
- dateTimeFormat(
- "h:mm a",
- DateTime
- .fromMillisecondsSinceEpoch(
- valueOrDefault<int>(
- eventDetailsEvtPerformancesRecord
- .startTime
- ?.millisecondsSinceEpoch,
- 0,
- ))),
- style: FlutterFlowTheme.of(context)
- .bodyMedium
- .override(
- font: GoogleFonts.poppins(
- fontWeight:
- FlutterFlowTheme.of(
- context)
- .bodyMedium
- .fontWeight,
- fontStyle:
- FlutterFlowTheme.of(
- context)
- .bodyMedium
- .fontStyle,
+ letterSpacing: 0.0,
+ fontWeight: FontWeight.bold,
+ fontStyle:
+ FlutterFlowTheme.of(context)
+ .titleSmall
+ .fontStyle,
+ ),
+ ),
+ InkWell(
+ splashColor: Colors.transparent,
+ focusColor: Colors.transparent,
+ hoverColor: Colors.transparent,
+ highlightColor: Colors.transparent,
+ onTap: () async {
+ if (eventDetailsEvtPerformancesRecord
+ .artistId !=
+ '') {
+ context.pushNamed(
+ ProfileDisplayArtistWidget
+ .routeName,
+ pathParameters: {
+ 'artistRef': serializeParam(
+ functions
+ .stringtoEvtArtistsDocRef(
+ eventDetailsEvtPerformancesRecord
+ .artistId),
+ ParamType.DocumentReference,
),
- letterSpacing: 0.0,
+ }.withoutNulls,
+ );
+ }
+ },
+ child: Container(
+ decoration: BoxDecoration(
+ borderRadius:
+ BorderRadius.circular(18.0),
+ border: Border.all(
+ color:
+ FlutterFlowTheme.of(context)
+ .tertiary,
+ width: 1.0,
+ ),
+ ),
+ child: Padding(
+ padding: EdgeInsets.all(12.0),
+ child: Row(
+ mainAxisSize: MainAxisSize.max,
+ crossAxisAlignment:
+ CrossAxisAlignment.center,
+ children: [
+ wrapWithModel(
+ model: _model
+ .profilePictureModel,
+ updateCallback: () =>
+ safeSetState(() {}),
+ child: ProfilePictureWidget(
+ photoUrl: _model
+ .evtArtistDoc
+ ?.photos
+ .firstOrNull,
+ size: 50,
+ ),
+ ),
+ Expanded(
+ child: Column(
+ mainAxisSize:
+ MainAxisSize.max,
+ crossAxisAlignment:
+ CrossAxisAlignment
+ .stretch,
+ children: [
+ Text(
+ valueOrDefault<
+ String>(
+ _model.evtArtistDoc
+ ?.name,
+ 'Artist',
+ ),
+ style: FlutterFlowTheme
+ .of(context)
+ .titleMedium
+ .override(
+ font: GoogleFonts
+ .poppins(
+ fontWeight: FlutterFlowTheme.of(
+ context)
+ .titleMedium
+ .fontWeight,
+ fontStyle: FlutterFlowTheme.of(
+ context)
+ .titleMedium
+ .fontStyle,
+ ),
+ letterSpacing:
+ 0.0,
+ fontWeight: FlutterFlowTheme.of(
+ context)
+ .titleMedium
+ .fontWeight,
+ fontStyle: FlutterFlowTheme.of(
+ context)
+ .titleMedium
+ .fontStyle,
+ ),
+ ),
+ ],
+ ),
+ ),
+ if (eventDetailsEvtPerformancesRecord
+ .artistId !=
+ '')
+ Icon(
+ Icons
+ .arrow_forward_ios_rounded,
+ color:
+ FlutterFlowTheme.of(
+ context)
+ .primary,
+ size: 25.0,
+ ),
+ ].divide(SizedBox(width: 12.0)),
+ ),
+ ),
+ ),
+ ),
+ ].divide(SizedBox(height: 8.0)),
+ ),
+ ),
+ if (_model.evtArtistDoc?.about != null &&
+ _model.evtArtistDoc?.about != '')
+ Container(
+ decoration: BoxDecoration(),
+ child: Column(
+ mainAxisSize: MainAxisSize.max,
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ Text(
+ 'Description',
+ style: FlutterFlowTheme.of(context)
+ .titleSmall
+ .override(
+ font: GoogleFonts.poppins(
+ fontWeight: FontWeight.bold,
+ fontStyle:
+ FlutterFlowTheme.of(
+ context)
+ .titleSmall
+ .fontStyle,
+ ),
+ letterSpacing: 0.0,
+ fontWeight: FontWeight.bold,
+ fontStyle:
+ FlutterFlowTheme.of(context)
+ .titleSmall
+ .fontStyle,
+ ),
+ ),
+ Text(
+ eventDetailsEvtPerformancesRecord
+ .about,
+ style: FlutterFlowTheme.of(context)
+ .bodyMedium
+ .override(
+ font: GoogleFonts.poppins(
fontWeight:
FlutterFlowTheme.of(
context)
@@ -845,51 +752,402 @@ class _EventDetailsWidgetState extends State<EventDetailsWidget> {
.bodyMedium
.fontStyle,
),
- ),
- ],
- ),
+ letterSpacing: 0.0,
+ fontWeight:
+ FlutterFlowTheme.of(context)
+ .bodyMedium
+ .fontWeight,
+ fontStyle:
+ FlutterFlowTheme.of(context)
+ .bodyMedium
+ .fontStyle,
+ ),
+ ),
+ ].divide(SizedBox(height: 8.0)),
+ ),
+ ),
+ Container(
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.circular(18.0),
+ border: Border.all(
+ color:
+ FlutterFlowTheme.of(context).tertiary,
+ width: 1.0,
+ ),
+ ),
+ child: Padding(
+ padding: EdgeInsets.all(12.0),
+ child: Row(
+ mainAxisSize: MainAxisSize.max,
+ crossAxisAlignment:
+ CrossAxisAlignment.center,
+ children: [
+ Container(
+ width: 50.0,
+ height: 50.0,
+ decoration: BoxDecoration(
+ color: FlutterFlowTheme.of(context)
+ .secondaryBackground,
+ shape: BoxShape.circle,
+ ),
+ alignment:
+ AlignmentDirectional(0.0, 0.0),
+ child: FaIcon(
+ FontAwesomeIcons.calendar,
+ color: FlutterFlowTheme.of(context)
+ .primaryText,
+ size: 26.0,
+ ),
+ ),
+ Expanded(
+ child: Column(
+ mainAxisSize: MainAxisSize.max,
+ crossAxisAlignment:
+ CrossAxisAlignment.stretch,
+ children: [
+ Text(
+ dateTimeFormat(
+ "MMM d, y",
+ DateTime
+ .fromMillisecondsSinceEpoch(
+ valueOrDefault<int>(
+ eventDetailsEvtPerformancesRecord
+ .startTime
+ ?.millisecondsSinceEpoch,
+ 0,
+ ))),
+ style: FlutterFlowTheme.of(
+ context)
+ .titleSmall
+ .override(
+ font: GoogleFonts.poppins(
+ fontWeight:
+ FontWeight.w600,
+ fontStyle:
+ FlutterFlowTheme.of(
+ context)
+ .titleSmall
+ .fontStyle,
+ ),
+ letterSpacing: 0.0,
+ fontWeight:
+ FontWeight.w600,
+ fontStyle:
+ FlutterFlowTheme.of(
+ context)
+ .titleSmall
+ .fontStyle,
+ ),
+ ),
+ Text(
+ dateTimeFormat(
+ "h:mm a",
+ DateTime
+ .fromMillisecondsSinceEpoch(
+ valueOrDefault<int>(
+ eventDetailsEvtPerformancesRecord
+ .startTime
+ ?.millisecondsSinceEpoch,
+ 0,
+ ))),
+ style: FlutterFlowTheme.of(
+ context)
+ .bodyMedium
+ .override(
+ font: GoogleFonts.poppins(
+ fontWeight:
+ FlutterFlowTheme.of(
+ context)
+ .bodyMedium
+ .fontWeight,
+ fontStyle:
+ FlutterFlowTheme.of(
+ context)
+ .bodyMedium
+ .fontStyle,
+ ),
+ letterSpacing: 0.0,
+ fontWeight:
+ FlutterFlowTheme.of(
+ context)
+ .bodyMedium
+ .fontWeight,
+ fontStyle:
+ FlutterFlowTheme.of(
+ context)
+ .bodyMedium
+ .fontStyle,
+ ),
+ ),
+ ],
+ ),
+ ),
+ ].divide(SizedBox(width: 12.0)),
),
- ].divide(SizedBox(width: 4.0)),
- ),
- wrapWithModel(
- model: _model.eventInterestWidgetDetailsModel,
- updateCallback: () => safeSetState(() {}),
- child: EventInterestWidgetDetailsWidget(
- attendanceCount:
- eventDetailsEvtPerformancesRecord
- .numLikes,
- eventDetails: false,
- eventRef: widget.eventRef!,
- eventTime: eventDetailsEvtPerformancesRecord
- .startTime!,
),
),
- Text(
- eventDetailsEvtPerformancesRecord.about,
- style: FlutterFlowTheme.of(context)
- .bodyMedium
- .override(
- font: GoogleFonts.poppins(
- fontWeight:
- FlutterFlowTheme.of(context)
- .bodyMedium
- .fontWeight,
- fontStyle:
- FlutterFlowTheme.of(context)
- .bodyMedium
- .fontStyle,
+ if (_model.evtVenueDoc?.reference != null)
+ InkWell(
+ splashColor: Colors.transparent,
+ focusColor: Colors.transparent,
+ hoverColor: Colors.transparent,
+ highlightColor: Colors.transparent,
+ onTap: () async {
+ context.pushNamed(
+ ProfileDisplayVenueWidget.routeName,
+ pathParameters: {
+ 'venueRef': serializeParam(
+ functions.stringtoEvtVenuesDocRef(
+ eventDetailsEvtPerformancesRecord
+ .venueId),
+ ParamType.DocumentReference,
+ ),
+ }.withoutNulls,
+ );
+ },
+ child: Container(
+ decoration: BoxDecoration(
+ borderRadius:
+ BorderRadius.circular(18.0),
+ border: Border.all(
+ color: FlutterFlowTheme.of(context)
+ .tertiary,
+ width: 1.0,
),
- letterSpacing: 0.0,
- fontWeight: FlutterFlowTheme.of(context)
- .bodyMedium
- .fontWeight,
- fontStyle: FlutterFlowTheme.of(context)
- .bodyMedium
- .fontStyle,
),
- ),
+ child: Padding(
+ padding: EdgeInsets.all(12.0),
+ child: Row(
+ mainAxisSize: MainAxisSize.max,
+ crossAxisAlignment:
+ CrossAxisAlignment.center,
+ children: [
+ Container(
+ width: 50.0,
+ height: 50.0,
+ decoration: BoxDecoration(
+ color:
+ FlutterFlowTheme.of(context)
+ .secondaryBackground,
+ shape: BoxShape.circle,
+ ),
+ alignment: AlignmentDirectional(
+ 0.0, 0.0),
+ child: Icon(
+ FFIcons.kmapPin,
+ color:
+ FlutterFlowTheme.of(context)
+ .primaryText,
+ size: 26.0,
+ ),
+ ),
+ Expanded(
+ child: Column(
+ mainAxisSize: MainAxisSize.max,
+ crossAxisAlignment:
+ CrossAxisAlignment.stretch,
+ children: [
+ Text(
+ valueOrDefault<String>(
+ _model.evtVenueDoc?.name,
+ 'Venue',
+ ),
+ style: FlutterFlowTheme.of(
+ context)
+ .titleSmall
+ .override(
+ font: GoogleFonts
+ .poppins(
+ fontWeight:
+ FontWeight.w600,
+ fontStyle:
+ FlutterFlowTheme.of(
+ context)
+ .titleSmall
+ .fontStyle,
+ ),
+ letterSpacing: 0.0,
+ fontWeight:
+ FontWeight.w600,
+ fontStyle:
+ FlutterFlowTheme.of(
+ context)
+ .titleSmall
+ .fontStyle,
+ ),
+ ),
+ Text(
+ '${_model.evtVenueDoc?.address.city}, ${_model.evtVenueDoc?.address.region}',
+ style: FlutterFlowTheme.of(
+ context)
+ .bodyMedium
+ .override(
+ font: GoogleFonts
+ .poppins(
+ fontWeight:
+ FlutterFlowTheme.of(
+ context)
+ .bodyMedium
+ .fontWeight,
+ fontStyle:
+ FlutterFlowTheme.of(
+ context)
+ .bodyMedium
+ .fontStyle,
+ ),
+ letterSpacing: 0.0,
+ fontWeight:
+ FlutterFlowTheme.of(
+ context)
+ .bodyMedium
+ .fontWeight,
+ fontStyle:
+ FlutterFlowTheme.of(
+ context)
+ .bodyMedium
+ .fontStyle,
+ ),
+ ),
+ InkWell(
+ splashColor:
+ Colors.transparent,
+ focusColor:
+ Colors.transparent,
+ hoverColor:
+ Colors.transparent,
+ highlightColor:
+ Colors.transparent,
+ onTap: () async {
+ var confirmDialogResponse =
+ await showDialog<
+ bool>(
+ context:
+ context,
+ builder:
+ (alertDialogContext) {
+ return AlertDialog(
+ title: Text(
+ 'Open Maps'),
+ content: Text(
+ 'This will open an external application. Would you like to continue?'),
+ actions: [
+ TextButton(
+ onPressed: () => Navigator.pop(
+ alertDialogContext,
+ false),
+ child: Text(
+ 'Cancel'),
+ ),
+ TextButton(
+ onPressed: () => Navigator.pop(
+ alertDialogContext,
+ true),
+ child: Text(
+ 'Continue'),
+ ),
+ ],
+ );
+ },
+ ) ??
+ false;
+ if (confirmDialogResponse) {
+ await launchMap(
+ location: _model
+ .evtVenueDoc
+ ?.location,
+ title: '',
+ );
+ } else {
+ Navigator.pop(context);
+ }
+ },
+ child: Row(
+ mainAxisSize:
+ MainAxisSize.min,
+ children: [
+ Align(
+ alignment:
+ AlignmentDirectional(
+ -1.0, 0.0),
+ child: Text(
+ '${functions.formatDistance(functions.calculateGeoDistanceMiles(currentUserLocationValue!, _model.evtVenueDoc!.location!))} miles'
+ .maybeHandleOverflow(
+ maxChars: 50,
+ ),
+ textAlign:
+ TextAlign.end,
+ maxLines: 2,
+ style: FlutterFlowTheme
+ .of(context)
+ .bodyMedium
+ .override(
+ font: GoogleFonts
+ .poppins(
+ fontWeight: FlutterFlowTheme.of(
+ context)
+ .bodyMedium
+ .fontWeight,
+ fontStyle: FlutterFlowTheme.of(
+ context)
+ .bodyMedium
+ .fontStyle,
+ ),
+ letterSpacing:
+ 0.0,
+ fontWeight: FlutterFlowTheme.of(
+ context)
+ .bodyMedium
+ .fontWeight,
+ fontStyle: FlutterFlowTheme.of(
+ context)
+ .bodyMedium
+ .fontStyle,
+ lineHeight:
+ 2.5,
+ ),
+ ),
+ ),
+ Padding(
+ padding:
+ EdgeInsetsDirectional
+ .fromSTEB(
+ 8.0,
+ 0.0,
+ 0.0,
+ 4.0),
+ child: FaIcon(
+ FontAwesomeIcons
+ .externalLinkSquareAlt,
+ color: FlutterFlowTheme
+ .of(context)
+ .primary,
+ size: 18.0,
+ ),
+ ),
+ ],
+ ),
+ ),
+ ],
+ ),
+ ),
+ Align(
+ alignment: AlignmentDirectional(
+ 0.0, -1.0),
+ child: Icon(
+ Icons.arrow_forward_ios_rounded,
+ color:
+ FlutterFlowTheme.of(context)
+ .primary,
+ size: 25.0,
+ ),
+ ),
+ ].divide(SizedBox(width: 12.0)),
+ ),
+ ),
+ ),
+ ),
]
- .divide(SizedBox(height: 24.0))
+ .divide(SizedBox(height: 16.0))
.addToStart(SizedBox(height: 1.0)),
),
),
diff --git a/lib/events/event_interest_widget/event_interest_widget_widget.dart b/lib/events/event_interest_widget/event_interest_widget_widget.dart
index a1be209..76aec86 100644
--- a/lib/events/event_interest_widget/event_interest_widget_widget.dart
+++ b/lib/events/event_interest_widget/event_interest_widget_widget.dart
@@ -185,25 +185,21 @@ class _EventInterestWidgetWidgetState extends State<EventInterestWidgetWidget> {
),
),
if (widget.transparentBG)
- Material(
- color: Colors.transparent,
- elevation: 2.0,
- shape: const CircleBorder(),
+ Opacity(
+ opacity: 0.4,
child: Container(
width: 45.0,
height: 45.0,
decoration: BoxDecoration(
- color: Theme.of(context).brightness == Brightness.light
- ? Color(0x0EF1F4F8)
- : Color(0x0E383C3C),
+ color: FlutterFlowTheme.of(context).primaryBackground,
shape: BoxShape.circle,
),
child: ClipRRect(
borderRadius: BorderRadius.circular(24.0),
child: BackdropFilter(
filter: ImageFilter.blur(
- sigmaX: 2.0,
- sigmaY: 2.0,
+ sigmaX: 0.0,
+ sigmaY: 0.0,
),
),
),
diff --git a/lib/events/event_interest_widget_details/event_interest_widget_details_model.dart b/lib/events/event_interest_widget_details/event_interest_widget_details_model.dart
index 7ecb9ac..2fd1604 100644
--- a/lib/events/event_interest_widget_details/event_interest_widget_details_model.dart
+++ b/lib/events/event_interest_widget_details/event_interest_widget_details_model.dart
@@ -17,9 +17,9 @@ class EventInterestWidgetDetailsModel
// Stores action output result for [Backend Call - Read Document] action in eventInterestWidgetDetails widget.
mystage_base_lib_p8jvwd_backend.ReactionsRecord? reactionOnInit;
- // Stores action output result for [Action Block - EnsureAuthenticatedOrPrompt] action in VenueDetails widget.
+ // Stores action output result for [Action Block - EnsureAuthenticatedOrPrompt] action in Stack widget.
bool? hasProfile;
- // Stores action output result for [Backend Call - Create Document] action in VenueDetails widget.
+ // Stores action output result for [Backend Call - Create Document] action in Stack widget.
mystage_base_lib_p8jvwd_backend.ReactionsRecord? reactionOnCreation;
@override
diff --git a/lib/events/event_interest_widget_details/event_interest_widget_details_widget.dart b/lib/events/event_interest_widget_details/event_interest_widget_details_widget.dart
index b24f6da..f7636ca 100644
--- a/lib/events/event_interest_widget_details/event_interest_widget_details_widget.dart
+++ b/lib/events/event_interest_widget_details/event_interest_widget_details_widget.dart
@@ -12,7 +12,6 @@ import 'package:ff_theme/flutter_flow/flutter_flow_theme.dart';
import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
-import 'package:google_fonts/google_fonts.dart';
import 'package:provider/provider.dart';
import 'event_interest_widget_details_model.dart';
export 'event_interest_widget_details_model.dart';
@@ -96,160 +95,110 @@ class _EventInterestWidgetDetailsWidgetState
hoverColor: Colors.transparent,
highlightColor: Colors.transparent,
onTap: () async {
+ var _shouldSetState = false;
_model.hasProfile = await action_blocks.ensureAuthenticatedOrPrompt(
context,
canCancel: true,
);
+ _shouldSetState = true;
await actions.printStatement(
'How\'d I get here??',
);
- if (_model.activeProfileReaction != null) {
- // Delete Reaction
- await _model.activeProfileReaction!.reference.delete();
- // Clear Reaction Data
- _model.activeProfileReaction = null;
- _model.attending = false;
- safeSetState(() {});
- } else {
- // Create Reaction
+ if (loggedIn) {
+ if (_model.activeProfileReaction != null) {
+ // Delete Reaction
+ await _model.activeProfileReaction!.reference.delete();
+ // Clear Reaction Data
+ _model.activeProfileReaction = null;
+ _model.attending = false;
+ safeSetState(() {});
+ } else {
+ // Create Reaction
- var reactionsRecordReference = mystage_base_lib_p8jvwd_backend
- .ReactionsRecord.collection
- .doc(functions.reactionidFromDocumentAndProfile(
- 'evt_performances',
- widget.eventRef!.id,
- mystage_base_lib_p8jvwd_app_state.FFAppState()
- .profileActiveRef!)!);
- await reactionsRecordReference.set({
- ...mystage_base_lib_p8jvwd_backend.createReactionsRecordData(
- account: currentUserReference,
- profile: mystage_base_lib_p8jvwd_app_state.FFAppState()
- .profileActiveRef,
- reaction: '✔️',
- contentId: 'evt_performances/${widget.eventRef?.id}',
- contentTime: widget.eventTime,
- ),
- ...mapToFirestore(
- {
- 'created_time': FieldValue.serverTimestamp(),
- },
- ),
- });
- _model.reactionOnCreation = mystage_base_lib_p8jvwd_backend
- .ReactionsRecord.getDocumentFromData({
- ...mystage_base_lib_p8jvwd_backend.createReactionsRecordData(
- account: currentUserReference,
- profile: mystage_base_lib_p8jvwd_app_state.FFAppState()
- .profileActiveRef,
- reaction: '✔️',
- contentId: 'evt_performances/${widget.eventRef?.id}',
- contentTime: widget.eventTime,
- ),
- ...mapToFirestore(
- {
- 'created_time': DateTime.now(),
- },
- ),
- }, reactionsRecordReference);
- // Store Reaction Data
- _model.activeProfileReaction = _model.reactionOnCreation;
- _model.attending = true;
- safeSetState(() {});
+ var reactionsRecordReference = mystage_base_lib_p8jvwd_backend
+ .ReactionsRecord.collection
+ .doc(functions.reactionidFromDocumentAndProfile(
+ 'evt_performances',
+ widget.eventRef!.id,
+ mystage_base_lib_p8jvwd_app_state.FFAppState()
+ .profileActiveRef!)!);
+ await reactionsRecordReference.set({
+ ...mystage_base_lib_p8jvwd_backend.createReactionsRecordData(
+ account: currentUserReference,
+ profile: mystage_base_lib_p8jvwd_app_state.FFAppState()
+ .profileActiveRef,
+ reaction: '✔️',
+ contentId: 'evt_performances/${widget.eventRef?.id}',
+ contentTime: widget.eventTime,
+ ),
+ ...mapToFirestore(
+ {
+ 'created_time': FieldValue.serverTimestamp(),
+ },
+ ),
+ });
+ _model.reactionOnCreation = mystage_base_lib_p8jvwd_backend
+ .ReactionsRecord.getDocumentFromData({
+ ...mystage_base_lib_p8jvwd_backend.createReactionsRecordData(
+ account: currentUserReference,
+ profile: mystage_base_lib_p8jvwd_app_state.FFAppState()
+ .profileActiveRef,
+ reaction: '✔️',
+ contentId: 'evt_performances/${widget.eventRef?.id}',
+ contentTime: widget.eventTime,
+ ),
+ ...mapToFirestore(
+ {
+ 'created_time': DateTime.now(),
+ },
+ ),
+ }, reactionsRecordReference);
+ _shouldSetState = true;
+ // Store Reaction Data
+ _model.activeProfileReaction = _model.reactionOnCreation;
+ _model.attending = true;
+ safeSetState(() {});
+ }
+
+ if (_shouldSetState) safeSetState(() {});
+ return;
+ } else {
+ if (_shouldSetState) safeSetState(() {});
+ return;
}
- safeSetState(() {});
+ if (_shouldSetState) safeSetState(() {});
},
- child: Row(
- mainAxisSize: MainAxisSize.min,
- mainAxisAlignment: MainAxisAlignment.start,
- crossAxisAlignment: CrossAxisAlignment.center,
+ child: Stack(
+ alignment: AlignmentDirectional(0.0, 0.0),
children: [
- Align(
- alignment: AlignmentDirectional(-1.0, 0.0),
- child: Container(
- width: 34.0,
- height: 34.0,
- child: Stack(
- alignment: AlignmentDirectional(0.0, 0.0),
- children: [
- Align(
- alignment: AlignmentDirectional(0.0, 0.0),
- child: Container(
- decoration: BoxDecoration(),
- child: Visibility(
- visible: _model.attending,
- child: Padding(
- padding: EdgeInsets.all(2.0),
- child: FaIcon(
- FontAwesomeIcons.solidCheckCircle,
- color: FlutterFlowTheme.of(context).primary,
- size: widget.eventDetails ? 34.0 : 28.0,
- ),
- ),
- ),
- ),
- ),
- Align(
- alignment: AlignmentDirectional(0.0, 0.0),
- child: Container(
- decoration: BoxDecoration(),
- child: Visibility(
- visible: !_model.attending,
- child: Padding(
- padding: EdgeInsetsDirectional.fromSTEB(
- 0.0, 1.0, 0.0, 0.0),
- child: Icon(
- Icons.add_circle_outline_rounded,
- color: FlutterFlowTheme.of(context).primaryText,
- size: 34.0,
- ),
- ),
- ),
- ),
- ),
- ],
+ Container(
+ width: 45.0,
+ height: 45.0,
+ decoration: BoxDecoration(
+ color: FlutterFlowTheme.of(context).secondaryBackground,
+ shape: BoxShape.circle,
+ ),
+ ),
+ if (_model.attending)
+ Padding(
+ padding: EdgeInsets.all(2.0),
+ child: FaIcon(
+ FontAwesomeIcons.solidBookmark,
+ color: FlutterFlowTheme.of(context).primary,
+ size: 20.0,
),
),
- ),
- Expanded(
- child: Column(
- mainAxisSize: MainAxisSize.min,
- mainAxisAlignment: MainAxisAlignment.center,
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Align(
- alignment: AlignmentDirectional(-1.0, 0.0),
- child: Padding(
- padding: EdgeInsetsDirectional.fromSTEB(8.0, 6.0, 0.0, 6.0),
- child: Text(
- widget.attendanceCount! > 0
- ? '${widget.attendanceCount?.toString()} Interested'
- : 'Interested',
- style: FlutterFlowTheme.of(context).bodyMedium.override(
- font: GoogleFonts.poppins(
- fontWeight: FlutterFlowTheme.of(context)
- .bodyMedium
- .fontWeight,
- fontStyle: FlutterFlowTheme.of(context)
- .bodyMedium
- .fontStyle,
- ),
- fontSize: 14.0,
- letterSpacing: 0.0,
- fontWeight: FlutterFlowTheme.of(context)
- .bodyMedium
- .fontWeight,
- fontStyle: FlutterFlowTheme.of(context)
- .bodyMedium
- .fontStyle,
- ),
- ),
- ),
- ),
- ],
+ if (!_model.attending)
+ Padding(
+ padding: EdgeInsetsDirectional.fromSTEB(0.0, 1.0, 0.0, 0.0),
+ child: FaIcon(
+ FontAwesomeIcons.bookmark,
+ color: FlutterFlowTheme.of(context).primaryText,
+ size: 22.0,
+ ),
),
- ),
- ].divide(SizedBox(width: 5.0)).addToStart(SizedBox(width: 0.0)),
+ ],
),
);
}
diff --git a/lib/events/event_saved_listing_vertical/event_saved_listing_vertical_widget.dart b/lib/events/event_saved_listing_vertical/event_saved_listing_vertical_widget.dart
index 543f5f8..aa7f934 100644
--- a/lib/events/event_saved_listing_vertical/event_saved_listing_vertical_widget.dart
+++ b/lib/events/event_saved_listing_vertical/event_saved_listing_vertical_widget.dart
@@ -94,7 +94,7 @@ class _EventSavedListingVerticalWidgetState
}
return Padding(
- padding: EdgeInsetsDirectional.fromSTEB(12.0, 0.0, 12.0, 0.0),
+ padding: EdgeInsetsDirectional.fromSTEB(12.0, 12.0, 12.0, 0.0),
child:
StreamBuilder<mystage_base_lib_p8jvwd_backend.EvtPerformancesRecord>(
stream:
diff --git a/lib/events/event_search_listing_vertical/event_search_listing_vertical_widget.dart b/lib/events/event_search_listing_vertical/event_search_listing_vertical_widget.dart
index b5f4b16..1719b53 100644
--- a/lib/events/event_search_listing_vertical/event_search_listing_vertical_widget.dart
+++ b/lib/events/event_search_listing_vertical/event_search_listing_vertical_widget.dart
@@ -84,7 +84,7 @@ class _EventSearchListingVerticalWidgetState
}
return Padding(
- padding: EdgeInsetsDirectional.fromSTEB(12.0, 0.0, 12.0, 0.0),
+ padding: EdgeInsetsDirectional.fromSTEB(12.0, 12.0, 12.0, 0.0),
child: InkWell(
splashColor: Colors.transparent,
focusColor: Colors.transparent,
diff --git a/lib/events/search_city/search_city_widget.dart b/lib/events/search_city/search_city_widget.dart
index ed76417..eba8a9f 100644
--- a/lib/events/search_city/search_city_widget.dart
+++ b/lib/events/search_city/search_city_widget.dart
@@ -656,9 +656,6 @@ class _SearchCityWidgetState extends State<SearchCityWidget> {
mainAxisSize: MainAxisSize.max,
children: [
Container(
- constraints: BoxConstraints(
- maxHeight: _model.searchIsOn ? 250.0 : 2000.0,
- ),
decoration: BoxDecoration(),
child: Builder(
builder: (context) {
diff --git a/lib/events/search_page/search_page_widget.dart b/lib/events/search_page/search_page_widget.dart
index a1045dc..79abc29 100644
--- a/lib/events/search_page/search_page_widget.dart
+++ b/lib/events/search_page/search_page_widget.dart
@@ -479,7 +479,7 @@ class _SearchPageWidgetState extends State<SearchPageWidget> {
),
child: Padding(
padding: EdgeInsetsDirectional.fromSTEB(
- 12.0, 20.0, 12.0, 12.0),
+ 12.0, 12.0, 12.0, 12.0),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.end,
@@ -1684,7 +1684,7 @@ class _SearchPageWidgetState extends State<SearchPageWidget> {
.waitForOnePageForListView1();
},
child: PagedListView<ApiPagingParams,
- dynamic>.separated(
+ dynamic>(
pagingController:
_model.setListViewController1(
(nextPageMarker) =>
@@ -1770,16 +1770,14 @@ class _SearchPageWidgetState extends State<SearchPageWidget> {
),
padding: EdgeInsets.fromLTRB(
0,
- 12.0,
0,
- 80.0,
+ 0,
+ 50.0,
),
primary: false,
shrinkWrap: true,
reverse: false,
scrollDirection: Axis.vertical,
- separatorBuilder: (_, __) =>
- SizedBox(height: 12.0),
builderDelegate:
PagedChildBuilderDelegate<
dynamic>(
@@ -1991,10 +1989,10 @@ class _SearchPageWidgetState extends State<SearchPageWidget> {
listViewReactionsRecordList =
snapshot.data!;
- return ListView.separated(
+ return ListView.builder(
padding: EdgeInsets.fromLTRB(
0,
- 12.0,
+ 0,
0,
50.0,
),
@@ -2002,8 +2000,6 @@ class _SearchPageWidgetState extends State<SearchPageWidget> {
shrinkWrap: true,
scrollDirection: Axis.vertical,
itemCount: listViewReactionsRecordList.length,
- separatorBuilder: (_, __) =>
- SizedBox(height: 12.0),
itemBuilder: (context, listViewIndex) {
final listViewReactionsRecord =
listViewReactionsRecordList[
diff --git a/lib/main.dart b/lib/main.dart
index 7948191..c6d080b 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -86,6 +86,7 @@ class MyAppScrollBehavior extends MaterialScrollBehavior {
class _MyAppState extends State<MyApp> {
ThemeMode _themeMode = FlutterFlowTheme.themeMode;
+ double _textScaleFactor = 1.0;
late AppStateNotifier _appStateNotifier;
late GoRouter _router;
@@ -136,6 +137,27 @@ class _MyAppState extends State<MyApp> {
FlutterFlowTheme.saveThemeMode(mode);
});
+ void setTextScaleFactor(double updatedFactor) {
+ if (updatedFactor < FlutterFlowTheme.minTextScaleFactor ||
+ updatedFactor > FlutterFlowTheme.maxTextScaleFactor) {
+ return;
+ }
+ safeSetState(() {
+ _textScaleFactor = updatedFactor;
+ });
+ }
+
+ void incrementTextScaleFactor(double incrementValue) {
+ final updatedFactor = _textScaleFactor + incrementValue;
+ if (updatedFactor < FlutterFlowTheme.minTextScaleFactor ||
+ updatedFactor > FlutterFlowTheme.maxTextScaleFactor) {
+ return;
+ }
+ safeSetState(() {
+ _textScaleFactor = updatedFactor;
+ });
+ }
+
@override
Widget build(BuildContext context) {
return MaterialApp.router(
@@ -186,6 +208,21 @@ class _MyAppState extends State<MyApp> {
),
themeMode: _themeMode,
routerConfig: _router,
+ builder: (_, child) => MediaQuery(
+ data: MediaQuery.of(context).copyWith(
+ textScaler:
+ _textScaleFactor == FlutterFlowTheme.defaultTextScaleFactor
+ ? MediaQuery.of(context).textScaler.clamp(
+ minScaleFactor: FlutterFlowTheme.minTextScaleFactor,
+ maxScaleFactor: FlutterFlowTheme.maxTextScaleFactor,
+ )
+ : TextScaler.linear(_textScaleFactor).clamp(
+ minScaleFactor: FlutterFlowTheme.minTextScaleFactor,
+ maxScaleFactor: FlutterFlowTheme.maxTextScaleFactor,
+ ),
+ ),
+ child: child!,
+ ),
);
}
}
diff --git a/lib/social_media/post_feed/post_feed_widget.dart b/lib/social_media/post_feed/post_feed_widget.dart
index 3118735..2f18a17 100644
--- a/lib/social_media/post_feed/post_feed_widget.dart
+++ b/lib/social_media/post_feed/post_feed_widget.dart
@@ -60,87 +60,60 @@ class _PostFeedWidgetState extends State<PostFeedWidget> {
return Scaffold(
key: scaffoldKey,
backgroundColor: FlutterFlowTheme.of(context).secondaryBackground,
- appBar: AppBar(
- backgroundColor: FlutterFlowTheme.of(context).primaryBackground,
- automaticallyImplyLeading: true,
- leading: Visibility(
- visible: false,
- child: FlutterFlowIconButton(
- borderWidth: 1.0,
- buttonSize: 40.0,
- icon: Icon(
- Icons.arrow_back_ios,
- color: FlutterFlowTheme.of(context).primaryText,
- size: 25.0,
+ appBar: PreferredSize(
+ preferredSize: Size.fromHeight(64.0),
+ child: AppBar(
+ backgroundColor: FlutterFlowTheme.of(context).primaryBackground,
+ automaticallyImplyLeading: true,
+ title: Padding(
+ padding: EdgeInsetsDirectional.fromSTEB(0.0, 10.0, 0.0, 0.0),
+ child: Stack(
+ children: [
+ if (Theme.of(context).brightness == Brightness.dark)
+ Image.asset(
+ 'assets/images/mystage-logo-white.png',
+ width: 120.0,
+ height: 60.0,
+ fit: BoxFit.fitWidth,
+ ),
+ if (Theme.of(context).brightness == Brightness.light)
+ Image.asset(
+ 'assets/images/mystage-logo-black.png',
+ width: 120.0,
+ height: 60.0,
+ fit: BoxFit.fitWidth,
+ ),
+ ],
),
- onPressed: () async {
- context.safePop();
- },
),
- ),
- title: Stack(
- children: [
- if (Theme.of(context).brightness == Brightness.dark)
- Image.asset(
- 'assets/images/mystage-logo-white.png',
- width: 90.0,
- height: 50.0,
- fit: BoxFit.fitWidth,
- ),
- if (Theme.of(context).brightness == Brightness.light)
- Image.asset(
- 'assets/images/mystage-logo-black.png',
- width: 90.0,
- height: 50.0,
- fit: BoxFit.fitWidth,
+ actions: [
+ Align(
+ alignment: AlignmentDirectional(-1.0, 0.0),
+ child: Padding(
+ padding: EdgeInsetsDirectional.fromSTEB(0.0, 10.0, 12.0, 0.0),
+ child: FlutterFlowIconButton(
+ borderRadius: 30.0,
+ borderWidth: 0.0,
+ buttonSize: 40.0,
+ fillColor: FlutterFlowTheme.of(context).secondaryBackground,
+ icon: FaIcon(
+ FontAwesomeIcons.edit,
+ color: FlutterFlowTheme.of(context).primaryText,
+ size: 22.0,
+ ),
+ onPressed: () async {
+ if (Navigator.of(context).canPop()) {
+ context.pop();
+ }
+ context.pushNamed(PostCreateWidget.routeName);
+ },
+ ),
),
+ ),
],
+ centerTitle: false,
+ elevation: 0.0,
),
- actions: [
- Visibility(
- visible: false,
- child: Padding(
- padding: EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 16.0, 0.0),
- child: FlutterFlowIconButton(
- borderColor: Colors.transparent,
- borderRadius: 30.0,
- buttonSize: 46.0,
- icon: FaIcon(
- FontAwesomeIcons.bell,
- color: FlutterFlowTheme.of(context).primaryText,
- size: 20.0,
- ),
- onPressed: () {
- print('NotificationsButton pressed ...');
- },
- ),
- ),
- ),
- Align(
- alignment: AlignmentDirectional(-1.0, 0.0),
- child: Padding(
- padding: EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 12.0, 0.0),
- child: FlutterFlowIconButton(
- borderRadius: 20.0,
- borderWidth: 0.0,
- buttonSize: 40.0,
- icon: Icon(
- Icons.add_to_photos_outlined,
- color: FlutterFlowTheme.of(context).primaryText,
- size: 30.0,
- ),
- onPressed: () async {
- if (Navigator.of(context).canPop()) {
- context.pop();
- }
- context.pushNamed(PostCreateWidget.routeName);
- },
- ),
- ),
- ),
- ],
- centerTitle: true,
- elevation: 0.0,
),
body: SafeArea(
top: true,
@@ -179,7 +152,12 @@ class _PostFeedWidgetState extends State<PostFeedWidget> {
}
return ListView.builder(
- padding: EdgeInsets.zero,
+ padding: EdgeInsets.fromLTRB(
+ 0,
+ 0,
+ 0,
+ 50.0,
+ ),
shrinkWrap: true,
scrollDirection: Axis.vertical,
itemCount: socialFeedPostsRecordList.length,
@@ -187,37 +165,39 @@ class _PostFeedWidgetState extends State<PostFeedWidget> {
final socialFeedPostsRecord =
socialFeedPostsRecordList[socialFeedIndex];
return Container(
- height: () {
- if ((socialFeedPostsRecord.videoUrl != '') &&
- (socialFeedPostsRecord.caption != '') &&
- (socialFeedPostsRecord.caption.length > 50)) {
- return 678.0;
- } else if ((socialFeedPostsRecord.videoUrl != '') &&
- (socialFeedPostsRecord.caption == '')) {
- return 610.0;
- } else if ((socialFeedPostsRecord.imageUrl != '') &&
- (socialFeedPostsRecord.caption != '') &&
- (socialFeedPostsRecord.caption.length > 50)) {
- return 568.0;
- } else if ((socialFeedPostsRecord.imageUrl != '') &&
- (socialFeedPostsRecord.caption == '')) {
- return 500.0;
- } else if ((socialFeedPostsRecord.videoUrl != '') &&
- (socialFeedPostsRecord.caption != '') &&
- ((String caption) {
- return caption.length <= 50;
- }(socialFeedPostsRecord.caption))) {
- return 656.0;
- } else if ((socialFeedPostsRecord.imageUrl != '') &&
- (socialFeedPostsRecord.caption != '') &&
- ((String caption) {
- return caption.length <= 50;
- }(socialFeedPostsRecord.caption))) {
- return 548.0;
- } else {
- return 310.0;
- }
- }(),
+ constraints: BoxConstraints(
+ minHeight: () {
+ if ((socialFeedPostsRecord.videoUrl != '') &&
+ (socialFeedPostsRecord.caption != '') &&
+ (socialFeedPostsRecord.caption.length > 50)) {
+ return 678.0;
+ } else if ((socialFeedPostsRecord.videoUrl != '') &&
+ (socialFeedPostsRecord.caption == '')) {
+ return 610.0;
+ } else if ((socialFeedPostsRecord.imageUrl != '') &&
+ (socialFeedPostsRecord.caption != '') &&
+ (socialFeedPostsRecord.caption.length > 50)) {
+ return 568.0;
+ } else if ((socialFeedPostsRecord.imageUrl != '') &&
+ (socialFeedPostsRecord.caption == '')) {
+ return 500.0;
+ } else if ((socialFeedPostsRecord.videoUrl != '') &&
+ (socialFeedPostsRecord.caption != '') &&
+ ((String caption) {
+ return caption.length <= 50;
+ }(socialFeedPostsRecord.caption))) {
+ return 656.0;
+ } else if ((socialFeedPostsRecord.imageUrl != '') &&
+ (socialFeedPostsRecord.caption != '') &&
+ ((String caption) {
+ return caption.length <= 50;
+ }(socialFeedPostsRecord.caption))) {
+ return 548.0;
+ } else {
+ return 100.0;
+ }
+ }(),
+ ),
decoration: BoxDecoration(),
child: Padding(
padding: EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 2.0),
diff --git a/lib/social_media/posts/menus/comment_menu/comment_menu_widget.dart b/lib/social_media/posts/menus/comment_menu/comment_menu_widget.dart
index f974742..09fad4a 100644
--- a/lib/social_media/posts/menus/comment_menu/comment_menu_widget.dart
+++ b/lib/social_media/posts/menus/comment_menu/comment_menu_widget.dart
@@ -280,7 +280,7 @@ class _CommentMenuWidgetState extends State<CommentMenuWidget> {
elevation: 0.0,
borderSide: BorderSide(
color: FlutterFlowTheme.of(context).error,
- width: 0.0,
+ width: 1.0,
),
borderRadius: BorderRadius.circular(40.0),
),
diff --git a/lib/social_media/posts/menus/post_menu_others/post_menu_others_widget.dart b/lib/social_media/posts/menus/post_menu_others/post_menu_others_widget.dart
index 3a2daae..abe1275 100644
--- a/lib/social_media/posts/menus/post_menu_others/post_menu_others_widget.dart
+++ b/lib/social_media/posts/menus/post_menu_others/post_menu_others_widget.dart
@@ -306,7 +306,7 @@ class _PostMenuOthersWidgetState extends State<PostMenuOthersWidget> {
await branchio_dynamic_linking_akp5u6_actions
.generateLink(
'/post/${widget.post?.reference.id}',
- 'By ${widget.posterProfile?.name} @ MyStage',
+ 'By ${widget.posterProfile?.name} @ MyStage',
(String var1) {
return var1.length > 40
? '${var1.substring(0, 40)}...'
diff --git a/lib/social_media/posts/post_content/post_content_widget.dart b/lib/social_media/posts/post_content/post_content_widget.dart
index d53ca3c..85f35a8 100644
--- a/lib/social_media/posts/post_content/post_content_widget.dart
+++ b/lib/social_media/posts/post_content/post_content_widget.dart
@@ -17,6 +17,7 @@ import 'package:ff_theme/flutter_flow/flutter_flow_theme.dart';
import 'package:flutter/material.dart';
import 'package:flutter_animate/flutter_animate.dart';
import 'package:flutter_spinkit/flutter_spinkit.dart';
+import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:provider/provider.dart';
import 'post_content_model.dart';
@@ -102,653 +103,717 @@ class _PostContentWidgetState extends State<PostContentWidget>
context.watch<FFAppState>();
context.watch<mystage_base_lib_p8jvwd_app_state.FFAppState>();
- return StreamBuilder<
- List<mystage_base_lib_p8jvwd_backend.ProfileRelationshipsRecord>>(
- stream: mystage_base_lib_p8jvwd_backend.queryProfileRelationshipsRecord(
- queryBuilder: (profileRelationshipsRecord) => profileRelationshipsRecord
- .where(
- 'profile',
- isEqualTo: mystage_base_lib_p8jvwd_app_state.FFAppState()
- .profileActiveRef,
- )
- .where(
- 'target_profile',
- isEqualTo: widget.profile?.reference,
- ),
- singleRecord: true,
- ),
- builder: (context, snapshot) {
- // Customize what your widget looks like when it's loading.
- if (!snapshot.hasData) {
- return Center(
- child: SizedBox(
- width: 50.0,
- height: 50.0,
- child: SpinKitRing(
- color: FlutterFlowTheme.of(context).primary,
- size: 50.0,
+ return Padding(
+ padding: EdgeInsetsDirectional.fromSTEB(12.0, 12.0, 12.0, 0.0),
+ child: StreamBuilder<
+ List<mystage_base_lib_p8jvwd_backend.ProfileRelationshipsRecord>>(
+ stream: mystage_base_lib_p8jvwd_backend.queryProfileRelationshipsRecord(
+ queryBuilder: (profileRelationshipsRecord) =>
+ profileRelationshipsRecord
+ .where(
+ 'profile',
+ isEqualTo: mystage_base_lib_p8jvwd_app_state.FFAppState()
+ .profileActiveRef,
+ )
+ .where(
+ 'target_profile',
+ isEqualTo: widget.profile?.reference,
+ ),
+ singleRecord: true,
+ ),
+ builder: (context, snapshot) {
+ // Customize what your widget looks like when it's loading.
+ if (!snapshot.hasData) {
+ return Center(
+ child: SizedBox(
+ width: 50.0,
+ height: 50.0,
+ child: SpinKitRing(
+ color: FlutterFlowTheme.of(context).primary,
+ size: 50.0,
+ ),
),
- ),
- );
- }
- List<mystage_base_lib_p8jvwd_backend.ProfileRelationshipsRecord>
- userPosterRelContainerProfileRelationshipsRecordList =
- snapshot.data!;
- final userPosterRelContainerProfileRelationshipsRecord =
- userPosterRelContainerProfileRelationshipsRecordList.isNotEmpty
- ? userPosterRelContainerProfileRelationshipsRecordList.first
- : null;
+ );
+ }
+ List<mystage_base_lib_p8jvwd_backend.ProfileRelationshipsRecord>
+ userPosterRelContainerProfileRelationshipsRecordList =
+ snapshot.data!;
+ final userPosterRelContainerProfileRelationshipsRecord =
+ userPosterRelContainerProfileRelationshipsRecordList.isNotEmpty
+ ? userPosterRelContainerProfileRelationshipsRecordList.first
+ : null;
- return Container(
- width: MediaQuery.sizeOf(context).width * 1.0,
- decoration: BoxDecoration(
- color: FlutterFlowTheme.of(context).primaryBackground,
- ),
- child: StreamBuilder<
- List<mystage_base_lib_p8jvwd_backend.ProfileRelationshipsRecord>>(
- stream:
- mystage_base_lib_p8jvwd_backend.queryProfileRelationshipsRecord(
- queryBuilder: (profileRelationshipsRecord) =>
- profileRelationshipsRecord
- .where(
- 'profile',
- isEqualTo: widget.profile?.reference,
- )
- .where(
- 'target_profile',
- isEqualTo:
- mystage_base_lib_p8jvwd_app_state.FFAppState()
- .profileActiveRef,
- ),
- singleRecord: true,
+ return Container(
+ decoration: BoxDecoration(
+ color: FlutterFlowTheme.of(context).primaryBackground,
+ borderRadius: BorderRadius.circular(18.0),
),
- builder: (context, snapshot) {
- // Customize what your widget looks like when it's loading.
- if (!snapshot.hasData) {
- return Center(
- child: SizedBox(
- width: 50.0,
- height: 50.0,
- child: SpinKitRing(
- color: FlutterFlowTheme.of(context).primary,
- size: 50.0,
- ),
- ),
- );
- }
- List<mystage_base_lib_p8jvwd_backend.ProfileRelationshipsRecord>
- posterUserRelContainerProfileRelationshipsRecordList =
- snapshot.data!;
- final posterUserRelContainerProfileRelationshipsRecord =
- posterUserRelContainerProfileRelationshipsRecordList
- .isNotEmpty
- ? posterUserRelContainerProfileRelationshipsRecordList
- .first
- : null;
-
- return Container(
- decoration: BoxDecoration(),
- child: StreamBuilder<
- List<
- mystage_base_lib_p8jvwd_backend
- .ProfilePostReactionsRecord>>(
- stream: mystage_base_lib_p8jvwd_backend
- .queryProfilePostReactionsRecord(
- queryBuilder: (profilePostReactionsRecord) =>
- profilePostReactionsRecord
- .where(
- 'profile',
- isEqualTo:
- mystage_base_lib_p8jvwd_app_state.FFAppState()
- .profileActiveRef,
- )
- .where(
- 'post',
- isEqualTo: widget.post?.reference,
- ),
- singleRecord: true,
- ),
- builder: (context, snapshot) {
- // Customize what your widget looks like when it's loading.
- if (!snapshot.hasData) {
- return Center(
- child: SizedBox(
- width: 50.0,
- height: 50.0,
- child: SpinKitRing(
- color: FlutterFlowTheme.of(context).primary,
- size: 50.0,
- ),
+ child: StreamBuilder<
+ List<
+ mystage_base_lib_p8jvwd_backend
+ .ProfileRelationshipsRecord>>(
+ stream: mystage_base_lib_p8jvwd_backend
+ .queryProfileRelationshipsRecord(
+ queryBuilder: (profileRelationshipsRecord) =>
+ profileRelationshipsRecord
+ .where(
+ 'profile',
+ isEqualTo: widget.profile?.reference,
+ )
+ .where(
+ 'target_profile',
+ isEqualTo:
+ mystage_base_lib_p8jvwd_app_state.FFAppState()
+ .profileActiveRef,
),
- );
- }
- List<
- mystage_base_lib_p8jvwd_backend
- .ProfilePostReactionsRecord>
- userPostReactionContainerProfilePostReactionsRecordList =
- snapshot.data!;
- final userPostReactionContainerProfilePostReactionsRecord =
- userPostReactionContainerProfilePostReactionsRecordList
- .isNotEmpty
- ? userPostReactionContainerProfilePostReactionsRecordList
- .first
- : null;
+ singleRecord: true,
+ ),
+ builder: (context, snapshot) {
+ // Customize what your widget looks like when it's loading.
+ if (!snapshot.hasData) {
+ return Center(
+ child: SizedBox(
+ width: 50.0,
+ height: 50.0,
+ child: SpinKitRing(
+ color: FlutterFlowTheme.of(context).primary,
+ size: 50.0,
+ ),
+ ),
+ );
+ }
+ List<mystage_base_lib_p8jvwd_backend.ProfileRelationshipsRecord>
+ posterUserRelContainerProfileRelationshipsRecordList =
+ snapshot.data!;
+ final posterUserRelContainerProfileRelationshipsRecord =
+ posterUserRelContainerProfileRelationshipsRecordList
+ .isNotEmpty
+ ? posterUserRelContainerProfileRelationshipsRecordList
+ .first
+ : null;
- return Container(
- decoration: BoxDecoration(),
- child: Visibility(
- visible: ((posterUserRelContainerProfileRelationshipsRecord == null) || !posterUserRelContainerProfileRelationshipsRecord.blocking) &&
- ((userPosterRelContainerProfileRelationshipsRecord ==
- null) ||
- !userPosterRelContainerProfileRelationshipsRecord
- .blocking) &&
- ((userPostReactionContainerProfilePostReactionsRecord ==
- null) ||
- !userPostReactionContainerProfilePostReactionsRecord
- .reported),
- child: Container(
- constraints: BoxConstraints(
- minHeight: 140.0,
+ return Container(
+ decoration: BoxDecoration(),
+ child: StreamBuilder<
+ List<
+ mystage_base_lib_p8jvwd_backend
+ .ProfilePostReactionsRecord>>(
+ stream: mystage_base_lib_p8jvwd_backend
+ .queryProfilePostReactionsRecord(
+ queryBuilder: (profilePostReactionsRecord) =>
+ profilePostReactionsRecord
+ .where(
+ 'profile',
+ isEqualTo: mystage_base_lib_p8jvwd_app_state
+ .FFAppState()
+ .profileActiveRef,
+ )
+ .where(
+ 'post',
+ isEqualTo: widget.post?.reference,
+ ),
+ singleRecord: true,
+ ),
+ builder: (context, snapshot) {
+ // Customize what your widget looks like when it's loading.
+ if (!snapshot.hasData) {
+ return Center(
+ child: SizedBox(
+ width: 50.0,
+ height: 50.0,
+ child: SpinKitRing(
+ color: FlutterFlowTheme.of(context).primary,
+ size: 50.0,
+ ),
),
- decoration: BoxDecoration(),
- child: Column(
- mainAxisSize: MainAxisSize.max,
- children: [
- Row(
- mainAxisSize: MainAxisSize.max,
- children: [
- if (widget.onPostPage)
- FlutterFlowIconButton(
- borderColor: Colors.transparent,
- borderRadius: 0.0,
- buttonSize: 45.0,
- icon: Icon(
- Icons.arrow_back_ios,
- color: FlutterFlowTheme.of(context)
- .primaryText,
- size: 25.0,
- ),
- onPressed: () async {
- if (widget.navigateBackTo == 'feed') {
- context.pushNamed(
- PostFeedWidget.routeName);
- } else {
- await actions.forcePauseAllVideos(
- context,
- );
- await Future.delayed(
- Duration(
- milliseconds: 100,
- ),
- );
- context.safePop();
- }
- },
- ),
- Expanded(
- child: InkWell(
- splashColor: Colors.transparent,
- focusColor: Colors.transparent,
- hoverColor: Colors.transparent,
- highlightColor: Colors.transparent,
- onTap: () async {
- await actions.forcePauseAllVideos(
- context,
- );
- await Future.delayed(
- Duration(
- milliseconds: 100,
- ),
- );
+ );
+ }
+ List<
+ mystage_base_lib_p8jvwd_backend
+ .ProfilePostReactionsRecord>
+ userPostReactionContainerProfilePostReactionsRecordList =
+ snapshot.data!;
+ final userPostReactionContainerProfilePostReactionsRecord =
+ userPostReactionContainerProfilePostReactionsRecordList
+ .isNotEmpty
+ ? userPostReactionContainerProfilePostReactionsRecordList
+ .first
+ : null;
- context.pushNamed(
- ProfileWidget.routeName,
- pathParameters: {
- 'profileRef': serializeParam(
- widget.profile?.reference,
- ParamType.DocumentReference,
- ),
- }.withoutNulls,
- );
- },
- child: Row(
- mainAxisSize: MainAxisSize.max,
- mainAxisAlignment:
- MainAxisAlignment.spaceBetween,
- children: [
- Padding(
- padding:
- EdgeInsetsDirectional.fromSTEB(
- 12.0, 12.0, 10.0, 8.0),
- child: wrapWithModel(
- model: _model.profilePictureModel,
- updateCallback: () =>
- safeSetState(() {}),
- child: ProfilePictureWidget(
- photoUrl:
- widget.profile?.photoUrl,
- size: 35,
- ),
- ),
+ return Container(
+ decoration: BoxDecoration(),
+ child: Visibility(
+ visible: ((posterUserRelContainerProfileRelationshipsRecord == null) || !posterUserRelContainerProfileRelationshipsRecord.blocking) &&
+ ((userPosterRelContainerProfileRelationshipsRecord ==
+ null) ||
+ !userPosterRelContainerProfileRelationshipsRecord
+ .blocking) &&
+ ((userPostReactionContainerProfilePostReactionsRecord ==
+ null) ||
+ !userPostReactionContainerProfilePostReactionsRecord
+ .reported),
+ child: Container(
+ decoration: BoxDecoration(),
+ child: Column(
+ mainAxisSize: MainAxisSize.max,
+ children: [
+ Padding(
+ padding: EdgeInsetsDirectional.fromSTEB(
+ 12.0, 12.0, 12.0, 4.0),
+ child: Row(
+ mainAxisSize: MainAxisSize.max,
+ children: [
+ if (widget.onPostPage)
+ FlutterFlowIconButton(
+ borderColor: Colors.transparent,
+ borderRadius: 0.0,
+ buttonSize: 45.0,
+ icon: Icon(
+ Icons.arrow_back_ios,
+ color: FlutterFlowTheme.of(context)
+ .primaryText,
+ size: 25.0,
),
- Expanded(
- child: Align(
- alignment: AlignmentDirectional(
- -1.0, 0.0),
- child: InkWell(
- splashColor: Colors.transparent,
- focusColor: Colors.transparent,
- hoverColor: Colors.transparent,
- highlightColor:
- Colors.transparent,
- onTap: () async {
- context.pushNamed(
- ProfileWidget.routeName,
- pathParameters: {
- 'profileRef':
- serializeParam(
- widget
- .profile?.reference,
- ParamType
- .DocumentReference,
- ),
- }.withoutNulls,
- );
- },
- child: Text(
- '@${widget.profile?.profileHandleDisplay}',
- style: FlutterFlowTheme.of(
- context)
- .bodyMedium
- .override(
- font: GoogleFonts
- .lexendDeca(
- fontWeight:
- FontWeight.normal,
- fontStyle:
- FlutterFlowTheme.of(
- context)
- .bodyMedium
- .fontStyle,
- ),
- color:
- FlutterFlowTheme.of(
- context)
- .primaryText,
- fontSize: 14.0,
- letterSpacing: 0.0,
- fontWeight:
- FontWeight.normal,
- fontStyle:
- FlutterFlowTheme.of(
- context)
- .bodyMedium
- .fontStyle,
- ),
- ),
- ),
- ),
- ),
- ],
- ),
- ),
- ),
- Align(
- alignment: AlignmentDirectional(0.0, 0.0),
- child: FlutterFlowIconButton(
- borderColor: Colors.transparent,
- borderRadius: 30.0,
- buttonSize: 46.0,
- icon: Icon(
- Icons.keyboard_control,
- color: FlutterFlowTheme.of(context)
- .primaryText,
- size: 25.0,
- ),
- onPressed: () async {
- if (widget.profile?.reference ==
- mystage_base_lib_p8jvwd_app_state
- .FFAppState()
- .profileActiveRef
- ? true
- : false) {
- await showModalBottomSheet(
- isScrollControlled: true,
- backgroundColor: Colors.transparent,
- enableDrag: false,
- context: context,
- builder: (context) {
- return Padding(
- padding:
- MediaQuery.viewInsetsOf(
- context),
- child: PostMenuMineWidget(
- post: widget.post!,
- onPostPage:
- widget.onPostPage,
- profile: widget.profile!,
+ onPressed: () async {
+ if (widget.navigateBackTo ==
+ 'feed') {
+ context.pushNamed(
+ PostFeedWidget.routeName);
+ } else {
+ await actions.forcePauseAllVideos(
+ context,
+ );
+ await Future.delayed(
+ Duration(
+ milliseconds: 100,
),
);
- },
- ).then(
- (value) => safeSetState(() {}));
- } else {
- await showModalBottomSheet(
- isScrollControlled: true,
- backgroundColor: Colors.transparent,
- enableDrag: false,
- context: context,
- builder: (context) {
- return Padding(
- padding:
- MediaQuery.viewInsetsOf(
- context),
- child: PostMenuOthersWidget(
- post: widget.post!,
- posterProfile:
- widget.profile!,
- postReaction:
- userPostReactionContainerProfilePostReactionsRecord,
- onPostPage:
- widget.onPostPage,
- profile: widget.profile!,
- ),
- );
- },
- ).then(
- (value) => safeSetState(() {}));
- }
- },
- ),
- ),
- ],
- ),
- Container(
- width: MediaQuery.sizeOf(context).width * 1.0,
- height: () {
- if (widget.post?.videoUrl != null &&
- widget.post?.videoUrl != '') {
- return 500.0;
- } else if (widget.post?.imageUrl != null &&
- widget.post?.imageUrl != '') {
- return 390.0;
- } else {
- return 200.0;
- }
- }(),
- decoration: BoxDecoration(
- gradient: LinearGradient(
- colors: [
- valueOrDefault<Color>(
- widget.post?.videoUrl != null &&
- widget.post?.videoUrl != ''
- ? Colors.black
- : FlutterFlowTheme.of(context)
- .primary,
- FlutterFlowTheme.of(context).primary,
- ),
- valueOrDefault<Color>(
- widget.post?.videoUrl != null &&
- widget.post?.videoUrl != ''
- ? Colors.black
- : Color(0xFFE58847),
- Color(0xFFE58847),
- )
- ],
- stops: [0.0, 1.0],
- begin: AlignmentDirectional(1.0, 0.87),
- end: AlignmentDirectional(-1.0, -0.87),
- ),
- ),
- child: Stack(
- alignment: AlignmentDirectional(0.0, 0.0),
- children: [
- if ((widget.post?.imageUrl == null ||
- widget.post?.imageUrl == '') &&
- (widget.post?.videoUrl == null ||
- widget.post?.videoUrl == '') &&
- (widget.post?.caption != null &&
- widget.post?.caption != ''))
- Padding(
- padding: EdgeInsetsDirectional.fromSTEB(
- 24.0, 70.0, 12.0, 70.0),
- child: Container(
- width:
- MediaQuery.sizeOf(context).width *
- 1.0,
- decoration: BoxDecoration(),
- child: Align(
- alignment:
- AlignmentDirectional(0.0, 0.0),
- child: Text(
- widget.post!.caption,
- textAlign: TextAlign.center,
- style:
- FlutterFlowTheme.of(context)
- .bodyMedium
- .override(
- font:
- GoogleFonts.poppins(
- fontWeight:
- FlutterFlowTheme.of(
- context)
- .bodyMedium
- .fontWeight,
- fontStyle:
- FlutterFlowTheme.of(
- context)
- .bodyMedium
- .fontStyle,
- ),
- fontSize: 14.0,
- letterSpacing: 0.0,
- fontWeight:
- FlutterFlowTheme.of(
- context)
- .bodyMedium
- .fontWeight,
- fontStyle:
- FlutterFlowTheme.of(
- context)
- .bodyMedium
- .fontStyle,
- ),
- ),
- ),
+ context.safePop();
+ }
+ },
),
- ),
- if (widget.post?.imageUrl != null &&
- widget.post?.imageUrl != '')
- Image.network(
- widget.post!.imageUrl,
- width:
- MediaQuery.sizeOf(context).width *
- 1.0,
- height: 390.0,
- fit: BoxFit.cover,
- ),
- if (widget.post?.videoUrl != null &&
- widget.post?.videoUrl != '')
- custom_widgets.CustomVidPlayer(
- width:
- MediaQuery.sizeOf(context).width *
- 1.0,
- height: 500.0,
- videoPath: widget.post!.videoUrl,
- playPauseVideoAction: true,
- looping: true,
- showControls: false,
- allowFullScreen: false,
- allowPlayBackSpeedChanging: false,
- loadingCircleColor:
- FlutterFlowTheme.of(context)
- .primary,
- controlAudio: !FFAppState().muteAudio,
- enablePlayOnFocus: true,
- actualTimestamp:
- (timestampSeconds) async {},
- onTap: () async {
- await actions.printStatement(
- 'clickly clierk',
- );
- if (FFAppState().muteAudio) {
- FFAppState().muteAudio = false;
- safeSetState(() {});
- _model.showUnmuteIcon = true;
- safeSetState(() {});
- await Future.delayed(
- Duration(
- milliseconds: 600,
- ),
- );
- _model.showUnmuteIcon = false;
- safeSetState(() {});
- } else {
- FFAppState().muteAudio = true;
- safeSetState(() {});
- _model.showMuteIcon = true;
- safeSetState(() {});
- await Future.delayed(
- Duration(
- milliseconds: 600,
- ),
- );
- _model.showMuteIcon = false;
- safeSetState(() {});
- }
- },
- ),
- if (_model.showUnmuteIcon)
- Align(
- alignment:
- AlignmentDirectional(0.0, 0.0),
- child: Icon(
- Icons.volume_up_rounded,
- color: FlutterFlowTheme.of(context)
- .primaryText,
- size: 40.0,
- ).animateOnPageLoad(animationsMap[
- 'iconOnPageLoadAnimation1']!),
- ),
- if (_model.showMuteIcon)
- Icon(
- Icons.volume_off_rounded,
- color: FlutterFlowTheme.of(context)
- .primaryText,
- size: 40.0,
- ).animateOnPageLoad(animationsMap[
- 'iconOnPageLoadAnimation2']!),
- ],
- ),
- ),
- Padding(
- padding: EdgeInsetsDirectional.fromSTEB(
- 4.0, 0.0, 12.0, 8.0),
- child: Row(
- mainAxisSize: MainAxisSize.max,
- mainAxisAlignment:
- MainAxisAlignment.spaceBetween,
- children: [
- Row(
- mainAxisSize: MainAxisSize.max,
- children: [
- InkWell(
+ Expanded(
+ child: InkWell(
splashColor: Colors.transparent,
focusColor: Colors.transparent,
hoverColor: Colors.transparent,
highlightColor: Colors.transparent,
onTap: () async {
- _model.returnedPostReaction =
- await action_blocks
- .returnProfilePostReaction(
+ await actions.forcePauseAllVideos(
context,
- knownReaction:
- userPostReactionContainerProfilePostReactionsRecord,
- post: widget.post?.reference,
);
- if (_model.returnedPostReaction
- ?.reaction !=
- null &&
- _model.returnedPostReaction
- ?.reaction !=
- '') {
- await _model.returnedPostReaction!
- .reference
- .update({
- ...mapToFirestore(
- {
- 'updated_time': FieldValue
- .serverTimestamp(),
- 'reaction':
- FieldValue.delete(),
- },
- ),
- });
- } else {
- await _model.returnedPostReaction!
- .reference
- .update({
- ...mystage_base_lib_p8jvwd_backend
- .createProfilePostReactionsRecordData(
- reaction: '❤️',
- ),
- ...mapToFirestore(
- {
- 'updated_time': FieldValue
- .serverTimestamp(),
- },
- ),
- });
- }
+ await Future.delayed(
+ Duration(
+ milliseconds: 100,
+ ),
+ );
- safeSetState(() {});
+ context.pushNamed(
+ ProfileWidget.routeName,
+ pathParameters: {
+ 'profileRef': serializeParam(
+ widget.profile?.reference,
+ ParamType.DocumentReference,
+ ),
+ }.withoutNulls,
+ );
},
child: Row(
- mainAxisSize: MainAxisSize.min,
+ mainAxisSize: MainAxisSize.max,
+ mainAxisAlignment:
+ MainAxisAlignment.spaceBetween,
children: [
- Stack(
- children: [
- if ((userPostReactionContainerProfilePostReactionsRecord !=
- null) &&
- (userPostReactionContainerProfilePostReactionsRecord
- .reaction !=
- ''))
- Padding(
- padding:
- EdgeInsets.all(8.0),
- child: Icon(
- Icons.favorite_rounded,
- color:
- FlutterFlowTheme.of(
- context)
- .primary,
- size: 24.0,
- ),
- ),
- if ((userPostReactionContainerProfilePostReactionsRecord ==
- null) ||
- (userPostReactionContainerProfilePostReactionsRecord
- .reaction ==
- ''))
- Padding(
- padding:
- EdgeInsets.all(8.0),
- child: Icon(
- Icons
- .favorite_border_rounded,
- color:
- FlutterFlowTheme.of(
- context)
- .primaryText,
- size: 24.0,
- ),
- ),
- ],
+ Padding(
+ padding: EdgeInsetsDirectional
+ .fromSTEB(
+ 0.0, 0.0, 8.0, 0.0),
+ child: wrapWithModel(
+ model: _model
+ .profilePictureModel,
+ updateCallback: () =>
+ safeSetState(() {}),
+ child: ProfilePictureWidget(
+ photoUrl: widget
+ .profile?.photoUrl,
+ size: 35,
+ ),
+ ),
),
+ Expanded(
+ child: InkWell(
+ splashColor:
+ Colors.transparent,
+ focusColor:
+ Colors.transparent,
+ hoverColor:
+ Colors.transparent,
+ highlightColor:
+ Colors.transparent,
+ onTap: () async {
+ context.pushNamed(
+ ProfileWidget.routeName,
+ pathParameters: {
+ 'profileRef':
+ serializeParam(
+ widget.profile
+ ?.reference,
+ ParamType
+ .DocumentReference,
+ ),
+ }.withoutNulls,
+ );
+ },
+ child: Text(
+ valueOrDefault<String>(
+ widget.profile
+ ?.profileHandleDisplay,
+ 'display username',
+ ),
+ style: FlutterFlowTheme.of(
+ context)
+ .bodyMedium
+ .override(
+ font: GoogleFonts
+ .poppins(
+ fontWeight:
+ FontWeight.w600,
+ fontStyle:
+ FlutterFlowTheme.of(
+ context)
+ .bodyMedium
+ .fontStyle,
+ ),
+ color: FlutterFlowTheme
+ .of(context)
+ .primaryText,
+ fontSize: 14.0,
+ letterSpacing: 0.0,
+ fontWeight:
+ FontWeight.w600,
+ fontStyle:
+ FlutterFlowTheme.of(
+ context)
+ .bodyMedium
+ .fontStyle,
+ ),
+ ),
+ ),
+ ),
+ ],
+ ),
+ ),
+ ),
+ FlutterFlowIconButton(
+ borderRadius: 30.0,
+ icon: Icon(
+ Icons.keyboard_control,
+ color: FlutterFlowTheme.of(context)
+ .primaryText,
+ size: 30.0,
+ ),
+ onPressed: () async {
+ if (widget.profile?.reference ==
+ mystage_base_lib_p8jvwd_app_state
+ .FFAppState()
+ .profileActiveRef
+ ? true
+ : false) {
+ await showModalBottomSheet(
+ isScrollControlled: true,
+ backgroundColor:
+ Colors.transparent,
+ enableDrag: false,
+ context: context,
+ builder: (context) {
+ return Padding(
+ padding:
+ MediaQuery.viewInsetsOf(
+ context),
+ child: PostMenuMineWidget(
+ post: widget.post!,
+ onPostPage:
+ widget.onPostPage,
+ profile: widget.profile!,
+ ),
+ );
+ },
+ ).then(
+ (value) => safeSetState(() {}));
+ } else {
+ await showModalBottomSheet(
+ isScrollControlled: true,
+ backgroundColor:
+ Colors.transparent,
+ enableDrag: false,
+ context: context,
+ builder: (context) {
+ return Padding(
+ padding:
+ MediaQuery.viewInsetsOf(
+ context),
+ child: PostMenuOthersWidget(
+ post: widget.post!,
+ posterProfile:
+ widget.profile!,
+ postReaction:
+ userPostReactionContainerProfilePostReactionsRecord,
+ onPostPage:
+ widget.onPostPage,
+ profile: widget.profile!,
+ ),
+ );
+ },
+ ).then(
+ (value) => safeSetState(() {}));
+ }
+ },
+ ),
+ ],
+ ),
+ ),
+ if ((widget.post?.imageUrl != null &&
+ widget.post?.imageUrl != '') ||
+ (widget.post?.videoUrl != null &&
+ widget.post?.videoUrl != ''))
+ Padding(
+ padding: EdgeInsetsDirectional.fromSTEB(
+ 12.0,
+ 0.0,
+ 12.0,
+ valueOrDefault<double>(
+ widget.post?.caption != null &&
+ widget.post?.caption != ''
+ ? 8.0
+ : 0.0,
+ 0.0,
+ )),
+ child: ClipRRect(
+ borderRadius: BorderRadius.circular(16.0),
+ child: Container(
+ height: () {
+ if (widget.post?.videoUrl != null &&
+ widget.post?.videoUrl != '') {
+ return 500.0;
+ } else if (widget.post?.imageUrl !=
+ null &&
+ widget.post?.imageUrl != '') {
+ return 390.0;
+ } else {
+ return 0.0;
+ }
+ }(),
+ decoration: BoxDecoration(
+ color: FlutterFlowTheme.of(context)
+ .tertiary,
+ borderRadius:
+ BorderRadius.circular(16.0),
+ ),
+ child: Stack(
+ alignment:
+ AlignmentDirectional(0.0, 0.0),
+ children: [
+ if (widget.post?.imageUrl !=
+ null &&
+ widget.post?.imageUrl != '')
+ Image.network(
+ widget.post!.imageUrl,
+ width:
+ MediaQuery.sizeOf(context)
+ .width *
+ 1.0,
+ height: 390.0,
+ fit: BoxFit.cover,
+ ),
+ if (widget.post?.videoUrl !=
+ null &&
+ widget.post?.videoUrl != '')
+ custom_widgets.CustomVidPlayer(
+ width:
+ MediaQuery.sizeOf(context)
+ .width *
+ 1.0,
+ height: 500.0,
+ videoPath:
+ widget.post!.videoUrl,
+ playPauseVideoAction: true,
+ looping: true,
+ showControls: false,
+ allowFullScreen: false,
+ allowPlayBackSpeedChanging:
+ false,
+ loadingCircleColor:
+ FlutterFlowTheme.of(context)
+ .primary,
+ controlAudio:
+ !FFAppState().muteAudio,
+ enablePlayOnFocus: true,
+ actualTimestamp:
+ (timestampSeconds) async {},
+ onTap: () async {
+ await actions.printStatement(
+ 'clickly clierk',
+ );
+ if (FFAppState().muteAudio) {
+ FFAppState().muteAudio =
+ false;
+ safeSetState(() {});
+ _model.showUnmuteIcon =
+ true;
+ safeSetState(() {});
+ await Future.delayed(
+ Duration(
+ milliseconds: 600,
+ ),
+ );
+ _model.showUnmuteIcon =
+ false;
+ safeSetState(() {});
+ } else {
+ FFAppState().muteAudio =
+ true;
+ safeSetState(() {});
+ _model.showMuteIcon = true;
+ safeSetState(() {});
+ await Future.delayed(
+ Duration(
+ milliseconds: 600,
+ ),
+ );
+ _model.showMuteIcon = false;
+ safeSetState(() {});
+ }
+ },
+ ),
+ if (_model.showUnmuteIcon)
Align(
alignment: AlignmentDirectional(
- -1.0, 0.0),
- child: Container(
+ 0.0, 0.0),
+ child: Icon(
+ Icons.volume_up_rounded,
+ color: FlutterFlowTheme.of(
+ context)
+ .primaryText,
+ size: 40.0,
+ ).animateOnPageLoad(animationsMap[
+ 'iconOnPageLoadAnimation1']!),
+ ),
+ if (_model.showMuteIcon)
+ Icon(
+ Icons.volume_off_rounded,
+ color:
+ FlutterFlowTheme.of(context)
+ .primaryText,
+ size: 40.0,
+ ).animateOnPageLoad(animationsMap[
+ 'iconOnPageLoadAnimation2']!),
+ ],
+ ),
+ ),
+ ),
+ ),
+ if ((widget.post?.caption != null &&
+ widget.post?.caption != '') &&
+ widget.onFeedPage)
+ Padding(
+ padding: EdgeInsetsDirectional.fromSTEB(
+ 12.0, 0.0, 12.0, 0.0),
+ child: Row(
+ mainAxisSize: MainAxisSize.max,
+ children: [
+ Expanded(
+ child: Text(
+ widget.post!.caption
+ .maybeHandleOverflow(
+ maxChars: 200,
+ replacement: '…',
+ ),
+ maxLines: 4,
+ style: FlutterFlowTheme.of(context)
+ .bodyMedium
+ .override(
+ font: GoogleFonts.poppins(
+ fontWeight:
+ FontWeight.normal,
+ fontStyle:
+ FlutterFlowTheme.of(
+ context)
+ .bodyMedium
+ .fontStyle,
+ ),
+ color: FlutterFlowTheme.of(
+ context)
+ .primaryText,
+ fontSize: 14.0,
+ letterSpacing: 0.0,
+ fontWeight: FontWeight.normal,
+ fontStyle:
+ FlutterFlowTheme.of(
+ context)
+ .bodyMedium
+ .fontStyle,
+ ),
+ ),
+ ),
+ ],
+ ),
+ ),
+ if ((widget.post?.caption != null &&
+ widget.post?.caption != '') &&
+ !widget.onFeedPage)
+ Padding(
+ padding: EdgeInsetsDirectional.fromSTEB(
+ 12.0, 0.0, 12.0, 0.0),
+ child: Row(
+ mainAxisSize: MainAxisSize.max,
+ children: [
+ Expanded(
+ child: Text(
+ widget.post!.caption,
+ style: FlutterFlowTheme.of(context)
+ .bodyMedium
+ .override(
+ font: GoogleFonts.poppins(
+ fontWeight:
+ FontWeight.normal,
+ fontStyle:
+ FlutterFlowTheme.of(
+ context)
+ .bodyMedium
+ .fontStyle,
+ ),
+ color: FlutterFlowTheme.of(
+ context)
+ .primaryText,
+ fontSize: 14.0,
+ letterSpacing: 0.0,
+ fontWeight: FontWeight.normal,
+ fontStyle:
+ FlutterFlowTheme.of(
+ context)
+ .bodyMedium
+ .fontStyle,
+ ),
+ ),
+ ),
+ ],
+ ),
+ ),
+ Padding(
+ padding: EdgeInsetsDirectional.fromSTEB(
+ 12.0, 12.0, 12.0, 12.0),
+ child: Row(
+ mainAxisSize: MainAxisSize.max,
+ mainAxisAlignment:
+ MainAxisAlignment.spaceBetween,
+ children: [
+ Row(
+ mainAxisSize: MainAxisSize.max,
+ children: [
+ InkWell(
+ splashColor: Colors.transparent,
+ focusColor: Colors.transparent,
+ hoverColor: Colors.transparent,
+ highlightColor: Colors.transparent,
+ onTap: () async {
+ _model.returnedPostReaction =
+ await action_blocks
+ .returnProfilePostReaction(
+ context,
+ knownReaction:
+ userPostReactionContainerProfilePostReactionsRecord,
+ post: widget.post?.reference,
+ );
+ if (_model.returnedPostReaction
+ ?.reaction !=
+ null &&
+ _model.returnedPostReaction
+ ?.reaction !=
+ '') {
+ await _model
+ .returnedPostReaction!
+ .reference
+ .update({
+ ...mapToFirestore(
+ {
+ 'updated_time': FieldValue
+ .serverTimestamp(),
+ 'reaction':
+ FieldValue.delete(),
+ },
+ ),
+ });
+ } else {
+ await _model
+ .returnedPostReaction!
+ .reference
+ .update({
+ ...mystage_base_lib_p8jvwd_backend
+ .createProfilePostReactionsRecordData(
+ reaction: '❤️',
+ ),
+ ...mapToFirestore(
+ {
+ 'updated_time': FieldValue
+ .serverTimestamp(),
+ },
+ ),
+ });
+ }
+
+ safeSetState(() {});
+ },
+ child: Row(
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ Stack(
+ children: [
+ if ((userPostReactionContainerProfilePostReactionsRecord !=
+ null) &&
+ (userPostReactionContainerProfilePostReactionsRecord
+ .reaction !=
+ ''))
+ Padding(
+ padding:
+ EdgeInsetsDirectional
+ .fromSTEB(
+ 0.0,
+ 0.0,
+ 8.0,
+ 0.0),
+ child: Icon(
+ Icons
+ .favorite_rounded,
+ color: FlutterFlowTheme
+ .of(context)
+ .primary,
+ size: 24.0,
+ ),
+ ),
+ if ((userPostReactionContainerProfilePostReactionsRecord ==
+ null) ||
+ (userPostReactionContainerProfilePostReactionsRecord
+ .reaction ==
+ ''))
+ Padding(
+ padding:
+ EdgeInsetsDirectional
+ .fromSTEB(
+ 0.0,
+ 0.0,
+ 8.0,
+ 0.0),
+ child: Icon(
+ Icons
+ .favorite_border_rounded,
+ color: FlutterFlowTheme
+ .of(context)
+ .primaryText,
+ size: 24.0,
+ ),
+ ),
+ ],
+ ),
+ Container(
constraints: BoxConstraints(
minWidth: 24.0,
maxWidth: 35.0,
@@ -791,27 +856,25 @@ class _PostContentWidgetState extends State<PostContentWidget>
),
),
),
- ),
- ],
- ),
- ),
- Row(
- mainAxisSize: MainAxisSize.min,
- children: [
- Padding(
- padding: EdgeInsets.all(8.0),
- child: Icon(
- Icons.mode_comment_outlined,
- color:
- FlutterFlowTheme.of(context)
- .primaryText,
- size: 24.0,
- ),
+ ],
),
- Align(
- alignment: AlignmentDirectional(
- -1.0, 0.0),
- child: Container(
+ ),
+ Row(
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ Padding(
+ padding: EdgeInsetsDirectional
+ .fromSTEB(
+ 0.0, 0.0, 8.0, 0.0),
+ child: FaIcon(
+ FontAwesomeIcons.commentAlt,
+ color: FlutterFlowTheme.of(
+ context)
+ .primaryText,
+ size: 18.0,
+ ),
+ ),
+ Container(
constraints: BoxConstraints(
minWidth: 24.0,
maxWidth: 35.0,
@@ -854,33 +917,17 @@ class _PostContentWidgetState extends State<PostContentWidget>
),
),
),
- ),
- ],
- ),
- ].divide(SizedBox(width: 8.0)),
- ),
- Row(
- mainAxisSize: MainAxisSize.max,
- children: [
- Text(
- dateTimeFormat("relative",
- widget.post!.createdTime!),
- style: FlutterFlowTheme.of(context)
- .bodySmall
- .override(
- font: GoogleFonts.poppins(
- fontWeight:
- FlutterFlowTheme.of(
- context)
- .bodySmall
- .fontWeight,
- fontStyle:
- FlutterFlowTheme.of(
- context)
- .bodySmall
- .fontStyle,
- ),
- letterSpacing: 0.0,
+ ],
+ ),
+ ].divide(SizedBox(width: 18.0)),
+ ),
+ Text(
+ dateTimeFormat("relative",
+ widget.post!.createdTime!),
+ style: FlutterFlowTheme.of(context)
+ .bodySmall
+ .override(
+ font: GoogleFonts.poppins(
fontWeight:
FlutterFlowTheme.of(context)
.bodySmall
@@ -890,89 +937,33 @@ class _PostContentWidgetState extends State<PostContentWidget>
.bodySmall
.fontStyle,
),
- ),
- if (false)
- Padding(
- padding:
- EdgeInsetsDirectional.fromSTEB(
- 4.0, 0.0, 4.0, 0.0),
- child: Icon(
- Icons.ios_share,
- color:
+ letterSpacing: 0.0,
+ fontWeight:
FlutterFlowTheme.of(context)
- .primaryText,
- size: 22.0,
+ .bodySmall
+ .fontWeight,
+ fontStyle:
+ FlutterFlowTheme.of(context)
+ .bodySmall
+ .fontStyle,
),
- ),
- ],
- ),
- ],
- ),
- ),
- Padding(
- padding: EdgeInsetsDirectional.fromSTEB(
- 0.0, 4.0, 0.0, 0.0),
- child: Row(
- mainAxisSize: MainAxisSize.max,
- children: [
- if (((widget.post?.imageUrl != null &&
- widget.post?.imageUrl != '') ||
- (widget.post?.videoUrl != null &&
- widget.post?.videoUrl !=
- '')) &&
- (widget.post?.caption != null &&
- widget.post?.caption != ''))
- Expanded(
- child: Padding(
- padding:
- EdgeInsetsDirectional.fromSTEB(
- 24.0, 4.0, 12.0, 24.0),
- child: Text(
- widget.post!.caption,
- maxLines:
- widget.onFeedPage ? 2 : 20,
- style: FlutterFlowTheme.of(context)
- .bodyMedium
- .override(
- font: GoogleFonts.lexendDeca(
- fontWeight:
- FontWeight.normal,
- fontStyle:
- FlutterFlowTheme.of(
- context)
- .bodyMedium
- .fontStyle,
- ),
- color: FlutterFlowTheme.of(
- context)
- .primaryText,
- fontSize: 14.0,
- letterSpacing: 0.0,
- fontWeight: FontWeight.normal,
- fontStyle:
- FlutterFlowTheme.of(
- context)
- .bodyMedium
- .fontStyle,
- ),
- ),
- ),
),
- ],
+ ],
+ ),
),
- ),
- ],
+ ],
+ ),
),
),
- ),
- );
- },
- ),
- );
- },
- ),
- );
- },
+ );
+ },
+ ),
+ );
+ },
+ ),
+ );
+ },
+ ),
);
}
}
diff --git a/lib/social_media/posts/post_create/post_create_widget.dart b/lib/social_media/posts/post_create/post_create_widget.dart
index f221a3e..6a02370 100644
--- a/lib/social_media/posts/post_create/post_create_widget.dart
+++ b/lib/social_media/posts/post_create/post_create_widget.dart
@@ -119,18 +119,18 @@ class _PostCreateWidgetState extends State<PostCreateWidget> {
alignment: AlignmentDirectional(-1.0, 0.0),
child: Text(
'Create Post',
- style: FlutterFlowTheme.of(context).titleSmall.override(
+ style: FlutterFlowTheme.of(context).labelLarge.override(
font: GoogleFonts.poppins(
fontWeight:
- FlutterFlowTheme.of(context).titleSmall.fontWeight,
+ FlutterFlowTheme.of(context).labelLarge.fontWeight,
fontStyle:
- FlutterFlowTheme.of(context).titleSmall.fontStyle,
+ FlutterFlowTheme.of(context).labelLarge.fontStyle,
),
letterSpacing: 0.0,
fontWeight:
- FlutterFlowTheme.of(context).titleSmall.fontWeight,
+ FlutterFlowTheme.of(context).labelLarge.fontWeight,
fontStyle:
- FlutterFlowTheme.of(context).titleSmall.fontStyle,
+ FlutterFlowTheme.of(context).labelLarge.fontStyle,
),
),
),
diff --git a/pubspec.yaml b/pubspec.yaml
index 4660e4a..b30b9fe 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -15,7 +15,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
-version: 0.4.19+1
+version: 0.4.20+1
environment:
sdk: ">=3.0.0 <4.0.0"
@@ -48,9 +48,9 @@ dependencies:
easy_debounce: 2.0.1
expandable: 5.0.1
ff_commons:
- path: ./dependencies/ff_commons # 0.4.19+1
+ path: ./dependencies/ff_commons # 0.4.20+1
ff_theme:
- path: ./dependencies/ff_theme # 0.4.19+1
+ path: ./dependencies/ff_theme # 0.4.20+1
file_picker: 10.1.9
firebase_analytics: 11.5.0
firebase_analytics_platform_interface: 4.4.0
@@ -92,6 +92,7 @@ dependencies:
google_api_headers: 4.5.3
google_fonts: 6.1.0
google_maps: 8.1.1
+ google_maps_cluster_manager: ^3.1.0
google_maps_flutter: 2.12.2
google_maps_flutter_android: 2.16.1
google_maps_flutter_ios: 2.15.2
@@ -155,6 +156,7 @@ dependencies:
sign_in_with_apple_platform_interface: 2.0.0
sign_in_with_apple_web: 3.0.0
simple_gradient_text: 1.2.3
+ smooth_page_indicator: 1.1.0
sqflite: 2.3.3+1
sqflite_common: 2.5.4+3
sticky_headers: 0.3.0+2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment