Function bodies 338 total
_DescriptionIIWidgetState class · dart · L20-L103 (84 LOC)app/lib/components/description_i_i_widget.dart
class _DescriptionIIWidgetState extends State<DescriptionIIWidget> {
late DescriptionIIModel _model;
@override
void setState(VoidCallback callback) {
super.setState(callback);
_model.onUpdate();
}
@override
void initState() {
super.initState();
_model = createModel(context, () => DescriptionIIModel());
WidgetsBinding.instance.addPostFrameCallback((_) => safeSetState(() {}));
}
@override
void dispose() {
_model.maybeDispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Padding(
padding: EdgeInsetsDirectional.fromSTEB(16.0, 0.0, 16.0, 8.0),
child: Container(
width: double.infinity,
decoration: BoxDecoration(
color: Colors.white,
boxShadow: [
BoxShadow(
blurRadius: 2.0,
color: Color(0x520E151B),
offset: Offset(
0.0,
1.0,
),
)
],
DetailComponentSearchNonEditableWidget class · dart · L16-L147 (132 LOC)app/lib/components/detail_component_search_non_editable_widget.dart
class DetailComponentSearchNonEditableWidget extends StatefulWidget {
const DetailComponentSearchNonEditableWidget({
super.key,
this.image,
this.impValue,
this.ttlValue,
this.dwnPmt,
this.address,
this.netRoi,
this.method,
this.lvgArea,
this.purchClosedDate,
this.beds,
this.lotAreaValue,
this.loanPayments,
this.loanFees,
this.pptyTaxIns,
this.baths,
this.permitsFees,
this.improvements,
this.futValue,
this.sellingCosts,
this.netReturn,
this.cashOnCash,
this.map2,
this.price,
this.duration,
this.saleCloseDate,
this.totalCosts,
this.detailUrl,
this.avgCompSsF,
this.futureValueSsF,
required this.zpid,
required this.selectedFilter,
this.avgPricePerArea,
this.futureArea,
this.futureBeds,
this.futureBaths,
this.rentEstimate,
this.capRate,
required this.dscr,
this.irr,
this.compsAvgPricePerBdrm,
this.rentPerSqft,
required ImageCardModel class · dart · L6-L21 (16 LOC)app/lib/components/image_card_model.dart
class ImageCardModel extends FlutterFlowModel<ImageCardWidget> {
/// Local state fields for this component.
int? zestimate;
/// State fields for stateful widgets in this component.
// Stores action output result for [Backend Call - API (GET zestimate)] action in ImageCard widget.
ApiCallResponse? apiResultyoa;
@override
void initState(BuildContext context) {}
@override
void dispose() {}
}ImageCardWidget class · dart · L14-L66 (53 LOC)app/lib/components/image_card_widget.dart
class ImageCardWidget extends StatefulWidget {
const ImageCardWidget({
super.key,
this.price,
this.address,
this.duration,
this.method,
this.grossReturn,
this.totalCosts,
this.financingCosts,
this.bedrooms,
this.baths,
this.livingArea,
this.lotArea,
this.proposedClosedDate,
this.proposedSaleDate,
this.imgSrc,
required this.zpid,
this.estimatedValue,
this.downPayment,
this.yearBuilt,
this.loanAmount,
this.detailUrl,
this.cashNeeded,
required this.netReturn,
});
final int? price;
final String? address;
final int? duration;
final String? method;
final int? grossReturn;
final int? totalCosts;
final int? financingCosts;
final int? bedrooms;
final int? baths;
final int? livingArea;
final double? lotArea;
final DateTime? proposedClosedDate;
final DateTime? proposedSaleDate;
final String? imgSrc;
final String? zpid;
final int? estimatedValue;
final int? downPaymentMainMapMarkerModel class · dart · L5-L11 (7 LOC)app/lib/components/main_map_marker_model.dart
class MainMapMarkerModel extends FlutterFlowModel<MainMapMarkerWidget> {
@override
void initState(BuildContext context) {}
@override
void dispose() {}
}MainMapMarkerWidget class · dart · L7-L19 (13 LOC)app/lib/components/main_map_marker_widget.dart
class MainMapMarkerWidget extends StatefulWidget {
const MainMapMarkerWidget({
super.key,
required this.property,
required this.onPropertyTap,
});
final dynamic property;
final Future Function(String zpid, String method)? onPropertyTap;
@override
State<MainMapMarkerWidget> createState() => _MainMapMarkerWidgetState();
}_MainMapMarkerWidgetState class · dart · L21-L99 (79 LOC)app/lib/components/main_map_marker_widget.dart
class _MainMapMarkerWidgetState extends State<MainMapMarkerWidget> {
late MainMapMarkerModel _model;
@override
void setState(VoidCallback callback) {
super.setState(callback);
_model.onUpdate();
}
@override
void initState() {
super.initState();
_model = createModel(context, () => MainMapMarkerModel());
WidgetsBinding.instance.addPostFrameCallback((_) => safeSetState(() {}));
}
@override
void dispose() {
_model.maybeDispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Align(
alignment: AlignmentDirectional(0.0, 0.0),
child: InkWell(
splashColor: Colors.transparent,
focusColor: Colors.transparent,
hoverColor: Colors.transparent,
highlightColor: Colors.transparent,
onTap: () async {
logFirebaseEvent('MAIN_MAP_MARKER_Container_c8uql00a_ON_TA');
logFirebaseEvent('Container_execute_callback');
await widget.onPropertyTapSame scanner, your repo: https://repobility.com — Repobility
NoResultsModel class · dart · L5-L11 (7 LOC)app/lib/components/no_results_model.dart
class NoResultsModel extends FlutterFlowModel<NoResultsWidget> {
@override
void initState(BuildContext context) {}
@override
void dispose() {}
}NoResultsWidget class · dart · L7-L12 (6 LOC)app/lib/components/no_results_widget.dart
class NoResultsWidget extends StatefulWidget {
const NoResultsWidget({super.key});
@override
State<NoResultsWidget> createState() => _NoResultsWidgetState();
}_NoResultsWidgetState class · dart · L14-L50 (37 LOC)app/lib/components/no_results_widget.dart
class _NoResultsWidgetState extends State<NoResultsWidget> {
late NoResultsModel _model;
@override
void setState(VoidCallback callback) {
super.setState(callback);
_model.onUpdate();
}
@override
void initState() {
super.initState();
_model = createModel(context, () => NoResultsModel());
WidgetsBinding.instance.addPostFrameCallback((_) => safeSetState(() {}));
}
@override
void dispose() {
_model.maybeDispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Text(
'No Results Found!',
style: FlutterFlowTheme.of(context).bodyMedium.override(
fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily,
fontSize: 24.0,
letterSpacing: 0.0,
useGoogleFonts: !FlutterFlowTheme.of(context).bodyMediumIsCustom,
),
);
}
}Step1DialogueModel class · dart · L5-L11 (7 LOC)app/lib/components/step1_dialogue_model.dart
class Step1DialogueModel extends FlutterFlowModel<Step1DialogueWidget> {
@override
void initState(BuildContext context) {}
@override
void dispose() {}
}Step1DialogueWidget class · dart · L12-L22 (11 LOC)app/lib/components/step1_dialogue_widget.dart
class Step1DialogueWidget extends StatefulWidget {
const Step1DialogueWidget({
super.key,
this.loadProperty,
});
final Future Function()? loadProperty;
@override
State<Step1DialogueWidget> createState() => _Step1DialogueWidgetState();
}Step2DialogueModel class · dart · L5-L11 (7 LOC)app/lib/components/step2_dialogue_model.dart
class Step2DialogueModel extends FlutterFlowModel<Step2DialogueWidget> {
@override
void initState(BuildContext context) {}
@override
void dispose() {}
}Step2DialogueWidget class · dart · L10-L20 (11 LOC)app/lib/components/step2_dialogue_widget.dart
class Step2DialogueWidget extends StatefulWidget {
const Step2DialogueWidget({
super.key,
required this.loadProperty,
});
final Future Function()? loadProperty;
@override
State<Step2DialogueWidget> createState() => _Step2DialogueWidgetState();
}_Step2DialogueWidgetState class · dart · L22-L225 (204 LOC)app/lib/components/step2_dialogue_widget.dart
class _Step2DialogueWidgetState extends State<Step2DialogueWidget> {
late Step2DialogueModel _model;
@override
void setState(VoidCallback callback) {
super.setState(callback);
_model.onUpdate();
}
@override
void initState() {
super.initState();
_model = createModel(context, () => Step2DialogueModel());
WidgetsBinding.instance.addPostFrameCallback((_) => safeSetState(() {}));
}
@override
void dispose() {
_model.maybeDispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Padding(
padding: EdgeInsetsDirectional.fromSTEB(350.0, 24.0, 0.0, 0.0),
child: ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: AnimatedContainer(
duration: Duration(milliseconds: 100),
curve: Curves.easeInOut,
width: 300.0,
constraints: BoxConstraints(
maxWidth: 300.0,
),
decoration: BoxDecoration(
color: FluPowered by Repobility — scan your code at https://repobility.com
Step3DialogueModel class · dart · L5-L11 (7 LOC)app/lib/components/step3_dialogue_model.dart
class Step3DialogueModel extends FlutterFlowModel<Step3DialogueWidget> {
@override
void initState(BuildContext context) {}
@override
void dispose() {}
}Step3DialogueWidget class · dart · L11-L21 (11 LOC)app/lib/components/step3_dialogue_widget.dart
class Step3DialogueWidget extends StatefulWidget {
const Step3DialogueWidget({
super.key,
required this.loadProperty,
});
final Future Function()? loadProperty;
@override
State<Step3DialogueWidget> createState() => _Step3DialogueWidgetState();
}_Step3DialogueWidgetState class · dart · L23-L274 (252 LOC)app/lib/components/step3_dialogue_widget.dart
class _Step3DialogueWidgetState extends State<Step3DialogueWidget> {
late Step3DialogueModel _model;
@override
void setState(VoidCallback callback) {
super.setState(callback);
_model.onUpdate();
}
@override
void initState() {
super.initState();
_model = createModel(context, () => Step3DialogueModel());
// On component load action.
SchedulerBinding.instance.addPostFrameCallback((_) async {
logFirebaseEvent('STEP3_DIALOGUE_Step3Dialogue_ON_INIT_STA');
logFirebaseEvent('Step3Dialogue_execute_callback');
await widget.loadProperty?.call();
});
WidgetsBinding.instance.addPostFrameCallback((_) => safeSetState(() {}));
}
@override
void dispose() {
_model.maybeDispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Padding(
padding: EdgeInsetsDirectional.fromSTEB(48.0, 0.0, 0.0, 0.0),
child: ClipRRect(
borderRadius: BorderRadius.circular(8.0),
chilSummaryComponentSearchWidget class · dart · L14-L73 (60 LOC)app/lib/components/summary_component_search_widget.dart
class SummaryComponentSearchWidget extends StatefulWidget {
const SummaryComponentSearchWidget({
super.key,
this.price,
required this.impValue,
this.ttlValue,
this.dwnPmt,
required this.duration,
this.address,
this.roi,
this.method,
required this.image,
this.cashOnCashReturn,
this.netReturn,
this.detailUrl,
this.zpid,
this.totalCosts,
this.financingCosts,
this.bedrooms,
this.livingArea,
this.purchaseDate,
this.saleDate,
this.lotArea,
this.bathrooms,
this.zestimate,
this.yearBuilt,
required this.loanAmount,
this.cashNeeded,
});
final int? price;
final int? impValue;
final int? ttlValue;
final int? dwnPmt;
final int? duration;
final String? address;
final int? roi;
final String? method;
final String? image;
final String? cashOnCashReturn;
final int? netReturn;
final String? detailUrl;
final String? zpid;
final int? totalCosts;
final int? financingCostSummaryofReturnsModel class · dart · L5-L11 (7 LOC)app/lib/components/summaryof_returns_model.dart
class SummaryofReturnsModel extends FlutterFlowModel<SummaryofReturnsWidget> {
@override
void initState(BuildContext context) {}
@override
void dispose() {}
}SummaryofReturnsWidget class · dart · L7-L35 (29 LOC)app/lib/components/summaryof_returns_widget.dart
class SummaryofReturnsWidget extends StatefulWidget {
const SummaryofReturnsWidget({
super.key,
double? cashOnCash,
double? netRoi,
double? irr,
double? capRate,
double? dscr,
this.roe,
this.groc,
required this.method,
}) : this.cashOnCash = cashOnCash ?? 1.0,
this.netRoi = netRoi ?? 1.0,
this.irr = irr ?? 1.0,
this.capRate = capRate ?? 1.0,
this.dscr = dscr ?? 1.0;
final double cashOnCash;
final double netRoi;
final double irr;
final double capRate;
final double dscr;
final double? roe;
final double? groc;
final String? method;
@override
State<SummaryofReturnsWidget> createState() => _SummaryofReturnsWidgetState();
}WelcomeMessageModel class · dart · L5-L11 (7 LOC)app/lib/components/welcome_message_model.dart
class WelcomeMessageModel extends FlutterFlowModel<WelcomeMessageWidget> {
@override
void initState(BuildContext context) {}
@override
void dispose() {}
}WelcomeMessageWidget class · dart · L7-L12 (6 LOC)app/lib/components/welcome_message_widget.dart
class WelcomeMessageWidget extends StatefulWidget {
const WelcomeMessageWidget({super.key});
@override
State<WelcomeMessageWidget> createState() => _WelcomeMessageWidgetState();
}Methodology: Repobility · https://repobility.com/research/state-of-ai-code-2026/
_WelcomeMessageWidgetState class · dart · L14-L49 (36 LOC)app/lib/components/welcome_message_widget.dart
class _WelcomeMessageWidgetState extends State<WelcomeMessageWidget> {
late WelcomeMessageModel _model;
@override
void setState(VoidCallback callback) {
super.setState(callback);
_model.onUpdate();
}
@override
void initState() {
super.initState();
_model = createModel(context, () => WelcomeMessageModel());
WidgetsBinding.instance.addPostFrameCallback((_) => safeSetState(() {}));
}
@override
void dispose() {
_model.maybeDispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Text(
'Welcome! Let’s Find Your Next investment Deal\n\nRight now, getRealDeal.ai is scanning every residential property on the market near you—filtering out the noise and surfacing only those with a positive return potential.\n\nRental, flip, add-on, ADU, or new build? If it pencils, you’ll see it—complete with a live-editable proforma you can tweak without leaving the screen.\n\nAll saved reports live in your Saved tab.CustomMap class · dart · L17-L45 (29 LOC)app/lib/custom_code/widgets/custom_map.dart
class CustomMap extends StatefulWidget {
const CustomMap({
super.key,
this.width,
this.height,
required this.coordinates,
required this.zoomSetting,
required this.compCoordinates,
this.markerImage,
this.markerImage2,
this.markerImage3,
this.minZoom,
this.maxZoom,
});
final double? width;
final double? height;
final LatLng coordinates;
final double zoomSetting;
final List<LatLng> compCoordinates;
final String? markerImage;
final String? markerImage2;
final String? markerImage3;
final int? minZoom;
final int? maxZoom;
@override
State<CustomMap> createState() => _CustomMapState();
}_CustomMapState class · dart · L47-L126 (80 LOC)app/lib/custom_code/widgets/custom_map.dart
class _CustomMapState extends State<CustomMap> {
lat.LatLng _convertLatLng(LatLng coord) =>
lat.LatLng(coord.latitude, coord.longitude);
@override
Widget build(BuildContext context) {
final lat.LatLng mainLatLng = _convertLatLng(widget.coordinates);
return SizedBox(
width: widget.width,
height: widget.height,
child: FlutterMap(
options: MapOptions(
initialCenter: mainLatLng,
initialZoom: widget.zoomSetting,
minZoom: widget.minZoom?.toDouble() ??
5, // set your desired minimum zoom level
maxZoom: widget.maxZoom?.toDouble() ??
18, // set your desired maximum zoom level
),
children: [
TileLayer(
urlTemplate: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
subdomains: const ['a', 'b', 'c'],
userAgentPackageName: 'com.mycompany.habu',
),
MarkerLayer(
markers: [
// MainMap class · dart · L17-L43 (27 LOC)app/lib/custom_code/widgets/main_map.dart
class MainMap extends StatefulWidget {
const MainMap({
super.key,
this.width,
this.height,
required this.coordinates,
required this.zoomSetting,
required this.propertyCoordinates,
this.minZoom,
this.maxZoom,
required this.onPropertyTap,
required this.properties,
});
final double? width;
final double? height;
final LatLng coordinates;
final double zoomSetting;
final List<LatLng> propertyCoordinates;
final double? minZoom;
final double? maxZoom;
final Future Function(String zpid, String method) onPropertyTap;
final List<dynamic> properties;
@override
State<MainMap> createState() => _MainMapState();
}_MainMapState class · dart · L45-L95 (51 LOC)app/lib/custom_code/widgets/main_map.dart
class _MainMapState extends State<MainMap> {
lat.LatLng _convertLatLng(LatLng coord) =>
lat.LatLng(coord.latitude, coord.longitude);
@override
Widget build(BuildContext context) {
final lat.LatLng mainLatLng = _convertLatLng(widget.coordinates);
return SizedBox(
width: widget.width,
height: widget.height,
child: FlutterMap(
options: MapOptions(
initialCenter: mainLatLng,
initialZoom: widget.zoomSetting,
minZoom: widget.minZoom ?? 5, // <- limit zoom out
maxZoom: widget.maxZoom ?? 18, // <- limit zoom in
),
children: [
TileLayer(
urlTemplate: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
subdomains: const ['a', 'b', 'c'],
userAgentPackageName: 'com.mycompany.habu',
),
MarkerLayer(
markers: [
// Property Markers
...widget.propertyCoordinates.asMap().entries.map(
WebpageScreenshot class · dart · L100-L114 (15 LOC)app/lib/custom_code/widgets/webpage_screenshot.dart
class WebpageScreenshot extends StatefulWidget {
const WebpageScreenshot({
super.key,
this.width,
this.height,
required this.showExportButton,
});
final double? width;
final double? height;
final bool showExportButton;
@override
State<WebpageScreenshot> createState() => _WebpageScreenshotState();
}_WebpageScreenshotState class · dart · L116-L196 (81 LOC)app/lib/custom_code/widgets/webpage_screenshot.dart
class _WebpageScreenshotState extends State<WebpageScreenshot> {
final ScreenshotController screenshotController = ScreenshotController();
final ScrollController scrollController = ScrollController();
Future<void> captureAndDownloadPdf() async {
try {
final pdf = pw.Document();
const int scrollSteps = 3;
for (int i = 0; i < scrollSteps; i++) {
// Scroll to next position
double targetOffset =
scrollController.position.maxScrollExtent * (i / scrollSteps);
await scrollController.animateTo(
targetOffset,
duration: const Duration(milliseconds: 500),
curve: Curves.easeInOut,
);
// Wait a little for rendering to settle
await Future.delayed(const Duration(milliseconds: 600));
// Take screenshot
final Uint8List? imageBytes = await screenshotController.capture();
if (imageBytes == null) throw Exception('Failed to capture image');
final pdfImagWidgetScreenshot class · dart · L21-L39 (19 LOC)app/lib/custom_code/widgets/widget_screenshot.dart
class WidgetScreenshot extends StatefulWidget {
const WidgetScreenshot({
Key? key,
this.width,
this.height,
required this.screenshotChild,
required this.initialPosition, // New parameter
this.markerCoordinates = const [], // New parameter with default empty list
}) : super(key: key);
final double? width;
final double? height;
final Widget Function() screenshotChild;
final LatLng initialPosition; // Map center
final List<LatLng> markerCoordinates; // List of marker positions
@override
_WidgetScreenshotState createState() => _WidgetScreenshotState();
}All rows scored by the Repobility analyzer (https://repobility.com)
_WidgetScreenshotState class · dart · L41-L232 (192 LOC)app/lib/custom_code/widgets/widget_screenshot.dart
class _WidgetScreenshotState extends State<WidgetScreenshot> {
final GlobalKey _repaintKey = GlobalKey();
// Replace with your actual Google Maps Static API Key
static const String googleMapsApiKey =
'AIzaSyBJDJQZEJh6kRfdslUQ8uEbzVsRSW-WwFc'; // IMPORTANT: Replace with your actual API key
Future<Uint8List?> _fetchStaticMapImage(
int zoom, LatLng center, List<LatLng> additionalMarkers) async {
// Renamed for clarity
const String size = '600x300';
// Explicitly format center coordinates (still good practice)
final String formattedCenter = '${center.latitude},${center.longitude}';
// --- START CHANGE HERE ---
// Combine initialPosition with other markers
List<LatLng> allMarkers = [center]; // Start with initialPosition
allMarkers.addAll(additionalMarkers); // Add the rest
String markersString = '';
if (allMarkers.isNotEmpty) {
markersString = '&markers=color:red%7C'; // Default red marker
// Format all combined mFFDevEnvironmentValues class · dart · L4-L31 (28 LOC)app/lib/environment_values.dart
class FFDevEnvironmentValues {
static const String currentEnvironment = 'Production';
static const String environmentValuesPath =
'assets/environment_values/environment.json';
static final FFDevEnvironmentValues _instance =
FFDevEnvironmentValues._internal();
factory FFDevEnvironmentValues() {
return _instance;
}
FFDevEnvironmentValues._internal();
Future<void> initialize() async {
try {
final String response =
await rootBundle.loadString(environmentValuesPath);
final data = await json.decode(response);
_paymentSuccessUrl = data['paymentSuccessUrl'];
} catch (e) {
print('Error loading environment values: $e');
}
}
String _paymentSuccessUrl = '';
String get paymentSuccessUrl => _paymentSuccessUrl;
}AnimationInfo class · dart · L9-L32 (24 LOC)app/lib/flutter_flow/flutter_flow_animations.dart
class AnimationInfo {
AnimationInfo({
required this.trigger,
required this.effectsBuilder,
this.loop = false,
this.reverse = false,
this.applyInitialState = true,
});
final AnimationTrigger trigger;
final List<Effect> Function()? effectsBuilder;
final bool applyInitialState;
final bool loop;
final bool reverse;
late AnimationController controller;
List<Effect>? _effects;
List<Effect> get effects => _effects ??= effectsBuilder!();
void maybeUpdateEffects(List<Effect>? updatedEffects) {
if (updatedEffects != null) {
_effects = updatedEffects;
}
}
}TiltEffect class · dart · L77-L112 (36 LOC)app/lib/flutter_flow/flutter_flow_animations.dart
class TiltEffect extends Effect<Offset> {
const TiltEffect({
Duration? delay,
Duration? duration,
Curve? curve,
Offset? begin,
Offset? end,
}) : super(
delay: delay,
duration: duration,
curve: curve,
begin: begin ?? const Offset(0.0, 0.0),
end: end ?? const Offset(0.0, 0.0),
);
@override
Widget build(
BuildContext context,
Widget child,
AnimationController controller,
EffectEntry entry,
) {
Animation<Offset> animation = buildAnimation(controller, entry);
return getOptimizedBuilder<Offset>(
animation: animation,
builder: (_, __) => Transform(
transform: Matrix4.identity()
..setEntry(3, 2, 0.001)
..rotateX(animation.value.dx)
..rotateY(animation.value.dy),
alignment: Alignment.center,
child: child,
),
);
}
}_TabLabelBarRenderer class · dart · L14-L61 (48 LOC)app/lib/flutter_flow/flutter_flow_button_tabbar.dart
class _TabLabelBarRenderer extends RenderFlex {
_TabLabelBarRenderer({
required Axis direction,
required MainAxisSize mainAxisSize,
required MainAxisAlignment mainAxisAlignment,
required CrossAxisAlignment crossAxisAlignment,
required TextDirection textDirection,
required VerticalDirection verticalDirection,
required this.onPerformLayout,
}) : super(
direction: direction,
mainAxisSize: mainAxisSize,
mainAxisAlignment: mainAxisAlignment,
crossAxisAlignment: crossAxisAlignment,
textDirection: textDirection,
verticalDirection: verticalDirection,
);
_LayoutCallback onPerformLayout;
@override
void performLayout() {
super.performLayout();
// xOffsets will contain childCount+1 values, giving the offsets of the
// leading edge of the first tab as the first value, of the leading edge of
// the each subsequent tab as each subsequent value, and of the trailing
// edge of_TabLabelBar class · dart · L66-L100 (35 LOC)app/lib/flutter_flow/flutter_flow_button_tabbar.dart
class _TabLabelBar extends Flex {
_TabLabelBar({
required List<Widget> children,
required this.onPerformLayout,
}) : super(
children: children,
direction: Axis.horizontal,
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
verticalDirection: VerticalDirection.down,
);
final _LayoutCallback onPerformLayout;
@override
RenderFlex createRenderObject(BuildContext context) {
return _TabLabelBarRenderer(
direction: direction,
mainAxisAlignment: mainAxisAlignment,
mainAxisSize: mainAxisSize,
crossAxisAlignment: crossAxisAlignment,
textDirection: getEffectiveTextDirection(context)!,
verticalDirection: verticalDirection,
onPerformLayout: onPerformLayout,
);
}
@override
void updateRenderObject(
BuildContext context, _TabLabelBarRenderer renderObject) {
super.updateRenderObj_IndicatorPainter class · dart · L102-L164 (63 LOC)app/lib/flutter_flow/flutter_flow_button_tabbar.dart
class _IndicatorPainter extends CustomPainter {
_IndicatorPainter({
required this.controller,
required this.tabKeys,
required _IndicatorPainter? old,
}) : super(repaint: controller.animation) {
if (old != null) {
saveTabOffsets(old._currentTabOffsets, old._currentTextDirection);
}
}
final TabController controller;
final List<GlobalKey> tabKeys;
// _currentTabOffsets and _currentTextDirection are set each time TabBar
// layout is completed. These values can be null when TabBar contains no
// tabs, since there are nothing to lay out.
List<double>? _currentTabOffsets;
TextDirection? _currentTextDirection;
BoxPainter? _painter;
bool _needsPaint = false;
void markNeedsPaint() {
_needsPaint = true;
}
void dispose() {
_painter?.dispose();
}
void saveTabOffsets(List<double>? tabOffsets, TextDirection? textDirection) {
_currentTabOffsets = tabOffsets;
_currentTextDirection = textDirection;
}
// _currentTabOff_TabBarScrollPosition class · dart · L171-L217 (47 LOC)app/lib/flutter_flow/flutter_flow_button_tabbar.dart
class _TabBarScrollPosition extends ScrollPositionWithSingleContext {
_TabBarScrollPosition({
required ScrollPhysics physics,
required ScrollContext context,
required ScrollPosition? oldPosition,
required this.tabBar,
}) : super(
initialPixels: null,
physics: physics,
context: context,
oldPosition: oldPosition,
);
final _FlutterFlowButtonTabBarState tabBar;
bool _viewportDimensionWasNonZero = false;
// Position should be adjusted at least once.
bool _needsPixelsCorrection = true;
@override
bool applyContentDimensions(double minScrollExtent, double maxScrollExtent) {
bool result = true;
if (!_viewportDimensionWasNonZero) {
_viewportDimensionWasNonZero = viewportDimension != 0.0;
}
// If the viewport never had a non-zero dimension, we just want to jump
// to the initial scroll position to avoid strange scrolling effects in
// release mode: In release mode, the viewport temporSame scanner, your repo: https://repobility.com — Repobility
_TabBarScrollController class · dart · L221-L236 (16 LOC)app/lib/flutter_flow/flutter_flow_button_tabbar.dart
class _TabBarScrollController extends ScrollController {
_TabBarScrollController(this.tabBar);
final _FlutterFlowButtonTabBarState tabBar;
@override
ScrollPosition createScrollPosition(ScrollPhysics physics,
ScrollContext context, ScrollPosition? oldPosition) {
return _TabBarScrollPosition(
physics: physics,
context: context,
oldPosition: oldPosition,
tabBar: tabBar,
);
}
}ChipData class · dart · L8-L12 (5 LOC)app/lib/flutter_flow/flutter_flow_choice_chips.dart
class ChipData {
const ChipData(this.label, [this.iconData]);
final String label;
final IconData? iconData;
}ChipStyle class · dart · L14-L35 (22 LOC)app/lib/flutter_flow/flutter_flow_choice_chips.dart
class ChipStyle {
const ChipStyle({
this.backgroundColor,
this.textStyle,
this.iconColor,
this.iconSize,
this.labelPadding,
this.elevation,
this.borderColor,
this.borderWidth,
this.borderRadius,
});
final Color? backgroundColor;
final TextStyle? textStyle;
final Color? iconColor;
final double? iconSize;
final EdgeInsetsGeometry? labelPadding;
final double? elevation;
final Color? borderColor;
final double? borderWidth;
final BorderRadius? borderRadius;
}FlutterFlowChoiceChips class · dart · L37-L69 (33 LOC)app/lib/flutter_flow/flutter_flow_choice_chips.dart
class FlutterFlowChoiceChips extends StatefulWidget {
const FlutterFlowChoiceChips({
super.key,
required this.options,
required this.onChanged,
required this.controller,
required this.selectedChipStyle,
required this.unselectedChipStyle,
required this.chipSpacing,
this.rowSpacing = 0.0,
required this.multiselect,
this.initialized = true,
this.alignment = WrapAlignment.start,
this.disabledColor,
this.wrapped = true,
});
final List<ChipData> options;
final void Function(List<String>?)? onChanged;
final FormFieldController<List<String>> controller;
final ChipStyle selectedChipStyle;
final ChipStyle unselectedChipStyle;
final double chipSpacing;
final double rowSpacing;
final bool multiselect;
final bool initialized;
final WrapAlignment alignment;
final Color? disabledColor;
final bool wrapped;
@override
State<FlutterFlowChoiceChips> createState() => _FlutterFlowChoiceChipsState();
}_FlutterFlowChoiceChipsState class · dart · L71-L178 (108 LOC)app/lib/flutter_flow/flutter_flow_choice_chips.dart
class _FlutterFlowChoiceChipsState extends State<FlutterFlowChoiceChips> {
late List<String> choiceChipValues;
List<String> get selectedValues => widget.controller.value ?? [];
@override
void initState() {
super.initState();
choiceChipValues = List.from(selectedValues);
if (!widget.initialized && choiceChipValues.isNotEmpty) {
SchedulerBinding.instance.addPostFrameCallback(
(_) {
if (widget.onChanged != null) {
widget.onChanged!(choiceChipValues);
}
},
);
}
}
@override
void dispose() {
super.dispose();
}
@override
Widget build(BuildContext context) {
final children = widget.options.map<Widget>(
(option) {
final selected = selectedValues.contains(option.label);
final style =
selected ? widget.selectedChipStyle : widget.unselectedChipStyle;
return Theme(
data: Theme.of(context).copyWith(canvasColor: Colors.transparent),
cMarkerImage class · dart · L39-L59 (21 LOC)app/lib/flutter_flow/flutter_flow_google_map.dart
class MarkerImage {
const MarkerImage({
required this.imagePath,
required this.isAssetImage,
this.size = 20.0,
});
final String imagePath;
final bool isAssetImage;
final double size;
@override
bool operator ==(Object other) =>
identical(this, other) ||
(other is MarkerImage &&
imagePath == other.imagePath &&
isAssetImage == other.isAssetImage &&
size == other.size);
@override
int get hashCode => Object.hash(imagePath, isAssetImage, size);
}FlutterFlowMarker class · dart · L61-L66 (6 LOC)app/lib/flutter_flow/flutter_flow_google_map.dart
class FlutterFlowMarker {
const FlutterFlowMarker(this.markerId, this.location, [this.onTap]);
final String markerId;
final latlng.LatLng location;
final Future Function()? onTap;
}FlutterFlowGoogleMap class · dart · L68-L115 (48 LOC)app/lib/flutter_flow/flutter_flow_google_map.dart
class FlutterFlowGoogleMap extends StatefulWidget {
const FlutterFlowGoogleMap({
required this.controller,
this.onCameraIdle,
this.initialLocation,
this.markers = const [],
this.markerColor = GoogleMarkerColor.red,
this.markerImage,
this.mapType = MapType.normal,
this.style = GoogleMapStyle.standard,
this.initialZoom = 12,
this.allowInteraction = true,
this.allowZoom = true,
this.showZoomControls = true,
this.showLocation = true,
this.showCompass = false,
this.showMapToolbar = false,
this.showTraffic = false,
this.centerMapOnMarkerTap = false,
// Whether the map takes gesture preference over the surrounding page.
// This is useful when the map is inside a scrolling Widget, and you want
// the gestures within the map to not affect the surrounding page.
this.mapTakesGesturePreference = false,
super.key,
});
final Completer<GoogleMapController> controller;
final Function(latlng.LatLng)? onCamePowered by Repobility — scan your code at https://repobility.com
_FlutterFlowGoogleMapState class · dart · L117-L256 (140 LOC)app/lib/flutter_flow/flutter_flow_google_map.dart
class _FlutterFlowGoogleMapState extends State<FlutterFlowGoogleMap> {
double get initialZoom => max(double.minPositive, widget.initialZoom);
LatLng get initialPosition =>
widget.initialLocation?.toGoogleMaps() ?? const LatLng(0.0, 0.0);
late Completer<GoogleMapController> _controller;
BitmapDescriptor? _markerDescriptor;
late LatLng currentMapCenter;
void initializeMarkerBitmap() {
final markerImage = widget.markerImage;
if (markerImage == null) {
_markerDescriptor = BitmapDescriptor.defaultMarkerWithHue(
googleMarkerColorMap[widget.markerColor]!,
);
return;
}
SchedulerBinding.instance.addPostFrameCallback((_) {
final markerImageSize = Size.square(markerImage.size);
var imageProvider = markerImage.isAssetImage
? Image.asset(markerImage.imagePath).image
: CachedNetworkImageProvider(markerImage.imagePath);
if (!kIsWeb) {
// workaround for https://github.com/flutter/flutter/issueFlutterFlowIconButton class · dart · L4-L42 (39 LOC)app/lib/flutter_flow/flutter_flow_icon_button.dart
class FlutterFlowIconButton extends StatefulWidget {
const FlutterFlowIconButton({
Key? key,
required this.icon,
this.borderColor,
this.borderRadius,
this.borderWidth,
this.buttonSize,
this.fillColor,
this.disabledColor,
this.disabledIconColor,
this.hoverColor,
this.hoverIconColor,
this.hoverBorderColor,
this.onPressed,
this.showLoadingIndicator = false,
this.focusBorderSide,
this.focusBorderRadius,
}) : super(key: key);
final Widget icon;
final double? borderRadius;
final double? buttonSize;
final Color? fillColor;
final Color? disabledColor;
final Color? disabledIconColor;
final Color? hoverColor;
final Color? hoverIconColor;
final Color? hoverBorderColor;
final Color? borderColor;
final double? borderWidth;
final bool showLoadingIndicator;
final Function()? onPressed;
final BorderSide? focusBorderSide;
final BorderRadius? focusBorderRadius;
@override
State<FlutterFlowIconButton> c_FlutterFlowIconButtonState class · dart · L44-L195 (152 LOC)app/lib/flutter_flow/flutter_flow_icon_button.dart
class _FlutterFlowIconButtonState extends State<FlutterFlowIconButton> {
bool loading = false;
late double? iconSize;
late Color? iconColor;
late Widget effectiveIcon;
@override
void initState() {
super.initState();
_updateIcon();
}
@override
void didUpdateWidget(FlutterFlowIconButton oldWidget) {
super.didUpdateWidget(oldWidget);
_updateIcon();
}
void _updateIcon() {
final isFontAwesome = widget.icon is FaIcon;
if (isFontAwesome) {
FaIcon icon = widget.icon as FaIcon;
effectiveIcon = FaIcon(
icon.icon,
size: icon.size,
);
iconSize = icon.size;
iconColor = icon.color;
} else {
Icon icon = widget.icon as Icon;
effectiveIcon = Icon(
icon.icon,
size: icon.size,
);
iconSize = icon.size;
iconColor = icon.color;
}
}
@override
Widget build(BuildContext context) {
ButtonStyle style = ButtonStyle(
shape: WidgetStateProperty.resolve