<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:webfeeds="http://webfeeds.org/rss/1.0">
    <channel>
        <title><![CDATA[FlutterFlow Community]]></title>
        <description><![CDATA[FlutterFlow Community]]></description>
        <link>https://community.flutterflow.io</link>
        <image>
            <url>https://tribe-s3-production.imgix.net/NCmwtgDmGjm8Ke1dLDq9A?fit=max&amp;w=500&amp;auto=compress,format</url>
            <title>FlutterFlow Community</title>
            <link>https://community.flutterflow.io</link>
        </image>
        <generator>Bettermode RSS Generator</generator>
        <lastBuildDate>Tue, 28 Apr 2026 16:19:54 GMT</lastBuildDate>
        <atom:link href="https://community.flutterflow.io/rss/feed" rel="self" type="application/rss+xml"/>
        <pubDate>Tue, 28 Apr 2026 16:19:54 GMT</pubDate>
        <copyright><![CDATA[2026 FlutterFlow Community]]></copyright>
        <language><![CDATA[en-us]]></language>
        <ttl>60</ttl>
        <webfeeds:icon>https://tribe-s3-production.imgix.net/NCmwtgDmGjm8Ke1dLDq9A?fit=max&amp;w=500&amp;auto=compress,format</webfeeds:icon>
        <webfeeds:related layout="card" target="browser"/>
        <item>
            <title><![CDATA[FlutterFlow for AI chat? 👾]]></title>
            <description><![CDATA[We’ve seen products ship fast…
and then spend months refactoring. and backend flows that were glued directly into the UI.

In our new video, we break down Why FlutterFlow works for scalable AI chat ...]]></description>
            <link>https://community.flutterflow.io/discussions-dzeand9o/post/flutterflow-for-ai-chat-I2WfQckZ9gWf43o</link>
            <guid isPermaLink="true">https://community.flutterflow.io/discussions-dzeand9o/post/flutterflow-for-ai-chat-I2WfQckZ9gWf43o</guid>
            <dc:creator><![CDATA[InAppo Developer]]></dc:creator>
            <pubDate>Tue, 28 Apr 2026 08:48:33 GMT</pubDate>
            <content:encoded><![CDATA[<p>We’ve seen products ship fast…<br>and then spend months refactoring. and backend flows that were glued directly into the UI. <br><br>In our new video, we break down Why FlutterFlow works for scalable AI chat products and what teams get wrong about it . If you’re building an AI-powered app, this might save you months. <br><br>🎥 Watch the full video on our channel: <a class="text-interactive hover:text-interactive-hovered" rel="noopener noreferrer nofollow" href="https://www.youtube.com/watch?v=7LEdYiTI6ho">https://lnkd.in/d7vKqV2w</a></p><figure data-align="center" data-size="best-fit" data-id="66C4GEROdHqDp1ssEPmru" data-version="v2" data-type="image"><img data-id="66C4GEROdHqDp1ssEPmru" src="https://tribe-s3-production.imgix.net/66C4GEROdHqDp1ssEPmru?auto=compress,format"></figure>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[W18 – 👀 For experienced FlutterFlow users]]></title>
            <description><![CDATA[What’s something you see beginners consistently overcomplicate in FlutterFlow?
Something that looks complex at first—but is actually much simpler once you understand it.
Curious to hear:

 * What people tend...]]></description>
            <link>https://community.flutterflow.io/discussions-dzeand9o/post/w18---for-experienced-flutterflow-users-Uhkt96oPM62Sv3Z</link>
            <guid isPermaLink="true">https://community.flutterflow.io/discussions-dzeand9o/post/w18---for-experienced-flutterflow-users-Uhkt96oPM62Sv3Z</guid>
            <dc:creator><![CDATA[Development Calda]]></dc:creator>
            <pubDate>Tue, 28 Apr 2026 08:10:32 GMT</pubDate>
            <content:encoded><![CDATA[<p>What’s something you see beginners&nbsp;<em>consistently overcomplicate</em>&nbsp;in FlutterFlow?<br>Something that looks complex at first—but is actually much simpler once you understand it.<br>Curious to hear:</p><ul><li><p>What people tend to overbuild or overthink</p></li><li><p>What the simpler approach usually is</p></li><li><p>And what “clicked” for you when you figured it out</p></li></ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to trigger UI changes based on exact Scroll Position (Offset) of a Column/ListView?]]></title>
            <description><![CDATA[Hi everyone! I am trying to build a dynamic TopBar (similar to the Apple/Netflix UI).

The goal is simple:

When the page is at the absolute top (scroll offset = 0), the TopBar should be completely ...]]></description>
            <link>https://community.flutterflow.io/ask-the-community-rcglymkn/post/how-to-trigger-ui-changes-based-on-exact-scroll-position-offset-of-a-fseoDJbfBZ6z0gH</link>
            <guid isPermaLink="true">https://community.flutterflow.io/ask-the-community-rcglymkn/post/how-to-trigger-ui-changes-based-on-exact-scroll-position-offset-of-a-fseoDJbfBZ6z0gH</guid>
            <category><![CDATA[Action trigger]]></category>
            <category><![CDATA[onscroll]]></category>
            <dc:creator><![CDATA[Syed Ali Shah]]></dc:creator>
            <pubDate>Tue, 28 Apr 2026 05:19:57 GMT</pubDate>
            <content:encoded><![CDATA[<p>Hi everyone! I am trying to build a dynamic TopBar (similar to the Apple/Netflix UI).</p><p>The goal is simple:</p><p>When the page is at the absolute top (scroll offset = 0), the TopBar should be completely transparent.</p><p>When the user scrolls down (e.g., scroll offset &gt; 20px), the TopBar should change its state to become blurred/darkened.</p><p>I want to do this smoothly without causing any lag or stutter in the native scrolling experience. However, I am unable to find a straightforward "On Scroll" action trigger that tracks the exact pixel position of the scrollable area.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Images from Firebase Storage not displaying in Admin Panel]]></title>
            <description><![CDATA[Hi! I need your help

I've been stuck for 4 days with this. My app uploads payment receipts to Firebase Storage correctly, and the URL is saved in Firestore. However, the Admin Panel won't show the ...]]></description>
            <link>https://community.flutterflow.io/ask-the-community-rcglymkn/post/images-from-firebase-storage-not-displaying-in-admin-panel-aR3lQ3efyGHwlZf</link>
            <guid isPermaLink="true">https://community.flutterflow.io/ask-the-community-rcglymkn/post/images-from-firebase-storage-not-displaying-in-admin-panel-aR3lQ3efyGHwlZf</guid>
            <dc:creator><![CDATA[Yohani Colombo]]></dc:creator>
            <pubDate>Tue, 28 Apr 2026 00:32:14 GMT</pubDate>
            <content:encoded><![CDATA[<p>Hi! I need your help</p><p> I've been stuck for 4 days with this. My app uploads payment receipts to Firebase Storage correctly, and the URL is saved in Firestore. However, the Admin Panel won't show the images.</p><p>What I've done:</p><p>Created a rol field in the users collection (client, merchant, admin).</p><p>Set Storage Rules to allow read if user.rol == 'admin'.</p><p>Granted IAM permissions to the Storage Service Account to access Firestore.</p><p>In FlutterFlow, the Image Widget is set to "Network" using the payment_receipt path.</p><p>The images still won't load in the Admin Panel even when logged in as "admin". Any ideas on what I'm missing? Thanks!</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Template purchase failed + Marketplace login not working]]></title>
            <description><![CDATA[Hi guys, I am hitting a wall here. Yesterday I purchased a Flutterflow template. I didn‘t do the purchase directly through the Marketplace, instead I did it within Flutterflow when choosing a premium ...]]></description>
            <link>https://community.flutterflow.io/ask-the-community-rcglymkn/post/template-purchase-failed-marketplace-login-not-working-ngXwaDaWnTCuHkZ</link>
            <guid isPermaLink="true">https://community.flutterflow.io/ask-the-community-rcglymkn/post/template-purchase-failed-marketplace-login-not-working-ngXwaDaWnTCuHkZ</guid>
            <dc:creator><![CDATA[Nik]]></dc:creator>
            <pubDate>Mon, 27 Apr 2026 16:48:38 GMT</pubDate>
            <content:encoded><![CDATA[<p>Hi guys, I am hitting a wall here. Yesterday I purchased a Flutterflow template. I didn‘t do the purchase directly through the Marketplace, instead I did it within Flutterflow when choosing a premium template for project creation. After purchase I tried creating my project based on the purchased template, however I got an error. So I tried to accessing Marketplace in order to access the template through there but I am totally unable to access the Marketplace by any means. Not a single login method is working for me, as soon as I select any option I get an error. This is happening since almost 24 hours. All it says is „Error: Error.“</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Codemagic build error: GitHub Error: Access Forbidden]]></title>
            <description><![CDATA[Both of my projects suddenly fail during Mobile Deployment with:

“Codemagic build error: GitHub Error: Access Forbidden”

I do not use GitHub integration in FlutterFlow, and nothing has changed on my ...]]></description>
            <link>https://community.flutterflow.io/ask-the-community-rcglymkn/post/codemagic-build-error-github-error-access-forbidden-6h4BvANcHWXRfCF</link>
            <guid isPermaLink="true">https://community.flutterflow.io/ask-the-community-rcglymkn/post/codemagic-build-error-github-error-access-forbidden-6h4BvANcHWXRfCF</guid>
            <category><![CDATA[Mobile Development]]></category>
            <dc:creator><![CDATA[Rickard Prieto]]></dc:creator>
            <pubDate>Mon, 27 Apr 2026 11:51:35 GMT</pubDate>
            <content:encoded><![CDATA[<p>Both of my projects suddenly fail during Mobile Deployment with:</p><p>“Codemagic build error: GitHub Error: Access Forbidden”</p><p>I do not use GitHub integration in FlutterFlow, and nothing has changed on my side. Since this affects multiple projects at the same time, it looks like an issue with FlutterFlow/Codemagic’s internal deployment pipeline, GitHub access, or dependency fetching.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Scrolling to a specific index in a ListView]]></title>
            <description><![CDATA[Hello all,

I’m currently building a quiz using a ListView, and I’m trying to create a smooth user flow where:

 * The user answers a question

 * Clicks on a “Continue” button

 * The next question appears

 * The view ...]]></description>
            <link>https://community.flutterflow.io/ask-the-community-rcglymkn/post/scrolling-to-a-specific-index-in-a-listview-MTQMr4s3QQNAgvQ</link>
            <guid isPermaLink="true">https://community.flutterflow.io/ask-the-community-rcglymkn/post/scrolling-to-a-specific-index-in-a-listview-MTQMr4s3QQNAgvQ</guid>
            <category><![CDATA[Listview]]></category>
            <category><![CDATA[Scrolling]]></category>
            <dc:creator><![CDATA[Schmitt Melanie]]></dc:creator>
            <pubDate>Mon, 27 Apr 2026 10:11:34 GMT</pubDate>
            <content:encoded><![CDATA[<p>Hello all,</p><p>I’m currently building a quiz using a ListView, and I’m trying to create a smooth user flow where:</p><ul><li><p>The user answers a question</p></li><li><p>Clicks on a “Continue” button</p></li><li><p>The next question appears </p></li><li><p>The view automatically scrolls down to the next question question</p></li></ul><p>I’ve gone through quite a few forum posts and discussions, and I understand there’s no super simple, built-in solution for this in FlutterFlow.</p><p>I’m comfortable adding some custom code if needed, but most of the solutions I’ve found so far seem fairly complex, and I’m wondering if I might be overcomplicating things.</p><p>Has anyone implemented something like this in a simpler or more streamlined way?<br></p><p>Any guidance or examples would be really appreciated!</p><p>Thanks 🙏</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[List not scrolling]]></title>
            <description><![CDATA[I add ListView in Verticle column. it works perfectly. later I tried to test it using "Web Deployment" it works perfect there too. but when I open web link in mobile, listview doesn't scroll at all. ...]]></description>
            <link>https://community.flutterflow.io/ask-the-community-rcglymkn/post/list-not-scrolling-D55EOy1S4mJ6Wdj</link>
            <guid isPermaLink="true">https://community.flutterflow.io/ask-the-community-rcglymkn/post/list-not-scrolling-D55EOy1S4mJ6Wdj</guid>
            <category><![CDATA[List View]]></category>
            <dc:creator><![CDATA[Pradyumansinh Jadeja]]></dc:creator>
            <pubDate>Mon, 27 Apr 2026 04:57:48 GMT</pubDate>
            <content:encoded><![CDATA[<p>I add ListView in Verticle column. it works perfectly. later I tried to test it using "Web Deployment" it works perfect there too. but when I open web link in mobile, listview doesn't scroll at all. please help to resolve this issue.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[bug fix need!]]></title>
            <description><![CDATA[animated oppacity, animated padding, animated alinment not working,,,,, i need those function please,,,]]></description>
            <link>https://community.flutterflow.io/ask-the-community-rcglymkn/post/bug-fix-need-HKIQN9v5gvxhYVQ</link>
            <guid isPermaLink="true">https://community.flutterflow.io/ask-the-community-rcglymkn/post/bug-fix-need-HKIQN9v5gvxhYVQ</guid>
            <dc:creator><![CDATA[Geun Sang Lim]]></dc:creator>
            <pubDate>Mon, 27 Apr 2026 00:01:53 GMT</pubDate>
            <content:encoded><![CDATA[<p>animated oppacity, animated padding, animated alinment not working,,,,, i need those function please,,,</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Custom Speech-to-Text Widget (Real-Time Transcription)]]></title>
            <description><![CDATA[Hey everyone 👋

I recently built a custom Speech-to-Text (STT) widget in FlutterFlow and wanted to share how I approached it — in case it helps someone working on voice-based features.


WHAT THIS DOES:

 * ...]]></description>
            <link>https://community.flutterflow.io/custom-code-showcase-5e5glxck/post/custom-speech-to-text-widget-real-time-transcription-U2wIKgNsObIBkQ8</link>
            <guid isPermaLink="true">https://community.flutterflow.io/custom-code-showcase-5e5glxck/post/custom-speech-to-text-widget-real-time-transcription-U2wIKgNsObIBkQ8</guid>
            <dc:creator><![CDATA[Muhummad Luqman]]></dc:creator>
            <pubDate>Sun, 26 Apr 2026 22:24:25 GMT</pubDate>
            <content:encoded><![CDATA[<p>Hey everyone 👋</p><p>I recently built a <strong>custom Speech-to-Text (STT) widget</strong> in FlutterFlow and wanted to share how I approached it — in case it helps someone working on voice-based features.</p><h3 class="text-lg" data-toc-id="81a6cb25-29cb-4d0f-b3f6-5d6b7d85ee4c" id="81a6cb25-29cb-4d0f-b3f6-5d6b7d85ee4c">What this does:</h3><ul><li><p>Converts speech to text in real-time</p></li><li><p>Continuously updates the input field with recognized words</p></li><li><p>Tap to start/stop listening</p></li><li><p>Handles session states (listening, stopped, errors)</p></li><li><p>Includes Lottie animation for better UX</p></li></ul><h3 class="text-lg" data-toc-id="9a112977-8b69-47a2-9fd1-22ffc592a4b6" id="9a112977-8b69-47a2-9fd1-22ffc592a4b6">Key Approach:</h3><p>Instead of directly using the STT plugin inside the widget, I created a <strong>singleton manager</strong> to handle:</p><ul><li><p>Initialization (only once)</p></li><li><p>Listening state globally</p></li><li><p>Callbacks for results, status, and errors</p></li></ul><p>This avoids multiple initializations and keeps things clean when reused across screens.<br><br>Widget Parameters:</p><p>The widget is designed to be reusable and flexible:</p><ul><li><p><code>width</code><strong> (double?)</strong><br>→ width of the widget</p></li><li><p><code>height</code><strong> (double?)</strong><br>→ height of the widget</p></li><li><p><code>onTextRecognized</code><strong> (Future Function(String))</strong> ✅ <em>Required</em><br>→ Callback that returns the recognized speech text in real-time</p></li><li><p><code>currentText</code><strong> (String?)</strong><br>→ Existing text (used to append new speech instead of replacing it)</p></li></ul><h3 class="text-lg" data-toc-id="7752aab2-5a01-48fa-8340-804c3f926490" id="7752aab2-5a01-48fa-8340-804c3f926490">Tech Used:</h3><ul><li><p><code>speech_to_text</code> package</p></li><li><p>Custom FlutterFlow widget</p></li><li><p>Lottie animations for voice feedback</p></li><li><p>Callback-based text handling</p></li></ul><h3 class="text-lg" data-toc-id="69f47a62-5f34-41c8-a9e5-7efc0d5e6204" id="69f47a62-5f34-41c8-a9e5-7efc0d5e6204">⚡ Use Cases:</h3><ul><li><p>Chat/messaging apps</p></li><li><p>AI assistants</p></li><li><p>Form inputs with voice</p></li><li><p>Accessibility features</p></li></ul><pre><code>// Automatic FlutterFlow imports
import '/backend/backend.dart';
import '/backend/schema/structs/index.dart';
import '/backend/schema/enums/enums.dart';
import '/flutter_flow/flutter_flow_theme.dart';
import '/flutter_flow/flutter_flow_util.dart';
import '/custom_code/widgets/index.dart'; // Imports other custom widgets
import '/custom_code/actions/index.dart'; // Imports custom actions
import '/flutter_flow/custom_functions.dart'; // Imports custom functions
import 'package:flutter/material.dart';
// Begin custom widget code
// DO NOT REMOVE OR MODIFY THE CODE ABOVE!

import 'package:speech_to_text/speech_to_text.dart' as stt;
import 'package:google_fonts/google_fonts.dart';
import 'package:lottie/lottie.dart';

// ─── Singleton STT Manager ───────────────────────────────────────────────────

typedef OnSpeechResult = void Function(String text);
typedef OnStatusChange = void Function(String status);

class SpeechSttManager {
  SpeechSttManager._internal();
  static final SpeechSttManager _instance = SpeechSttManager._internal();
  factory SpeechSttManager() =&gt; _instance;

  final stt.SpeechToText _speech = stt.SpeechToText();

  bool _available = false;
  bool _initialized = false;

  OnSpeechResult? onResult;
  OnStatusChange? onStatus;
  OnStatusChange? onError;

  Future&lt;void&gt; initialize() async {
    if (_initialized) return;

    _available = await _speech.initialize(
      onStatus: (status) =&gt; onStatus?.call(status),
      onError: (error) =&gt; onError?.call(error.errorMsg),
    );

    _initialized = true;
  }

  bool get isAvailable =&gt; _available;
  bool get isListening =&gt; _speech.isListening;

  Future&lt;void&gt; startListening({required OnSpeechResult onSpeech}) async {
    onResult = onSpeech;
    if (!_available) return;
    await _speech.listen(
      onResult: (result) =&gt; onResult?.call(result.recognizedWords),
      listenFor: const Duration(minutes: 2),
      pauseFor: const Duration(seconds: 5),
      localeId: 'en_US',
    );
  }

  Future&lt;void&gt; stopListening() async =&gt; await _speech.stop();
  Future&lt;void&gt; cancelListening() async =&gt; await _speech.cancel();
}

// ─── Widget ──────────────────────────────────────────────────────────────────

class SpeechRecognizer extends StatefulWidget {
  const SpeechRecognizer({
    super.key,
    this.width,
    this.height,
    required this.onTextRecognized,
    this.currentText,
  });

  final double? width;
  final double? height;
  final Future Function(String recognizedText) onTextRecognized;
  final String? currentText;

  @override
  State&lt;SpeechRecognizer&gt; createState() =&gt; _SpeechRecognizerState();
}

class _SpeechRecognizerState extends State&lt;SpeechRecognizer&gt; {
  final _sttManager = SpeechSttManager();

  bool _isListening = false;
  bool _isInitializing = true;
  String _textBeforeSession = '';

  @override
  void initState() {
    super.initState();
    _initSpeech();
  }

  Future&lt;void&gt; _initSpeech() async {
    _sttManager.onStatus = (status) {
      print("STT status: $status");
      if (status == 'done') _resetUI();
    };

    _sttManager.onError = (error) {
      print("STT error: $error");
      _resetUI();
    };

    await _sttManager.initialize();

    if (!mounted) return;
    setState(() =&gt; _isInitializing = false);
  }

  Future&lt;void&gt; _startListening() async {
    if (!_sttManager.isAvailable || _isListening) return;

    _textBeforeSession = widget.currentText ?? '';
    setState(() =&gt; _isListening = true);

    await _sttManager.startListening(
      onSpeech: (words) {
        if (words.isNotEmpty) {
          final combined =
              _textBeforeSession.isEmpty ? words : '$_textBeforeSession $words';
          widget.onTextRecognized(combined);
        }
      },
    );
  }

  Future&lt;void&gt; _stopListening() async {
    await _sttManager.stopListening();
    _resetUI();
  }

  void _resetUI() {
    if (!mounted) return;
    WidgetsBinding.instance.addPostFrameCallback((_) {
      if (!mounted) return;
      setState(() =&gt; _isListening = false);
    });
  }

  @override
  void dispose() {
    _sttManager.stopListening();
    _sttManager.onStatus = null;
    _sttManager.onError = null;
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    final primary = FlutterFlowTheme.of(context).primary;

    if (_isInitializing) {
      return SizedBox(
        width: widget.width,
        height: widget.height,
        child: const Center(child: CircularProgressIndicator()),
      );
    }

    return SizedBox(
      width: widget.width,
      height: widget.height,
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Lottie.asset(
            'assets/jsons/audio_visualizer_animation.json',
            width: 150,
            height: 90,
            animate: _isListening,
          ),
          const SizedBox(height: 20),
          GestureDetector(
            onTap: _isListening ? _stopListening : _startListening,
            child: Container(
              width: 72,
              height: 72,
              decoration: BoxDecoration(
                color: primary,
                shape: BoxShape.circle,
              ),
              child: Icon(
                _isListening ? Icons.pause : Icons.mic,
                color: Colors.white,
                size: 32,
              ),
            ),
          ),
          const SizedBox(height: 16),
          Text(
            _isListening ? "Listening..." : "Tap to speak",
            style: GoogleFonts.inter(fontWeight: FontWeight.w500),
          ),
        ],
      ),
    );
  }
}</code></pre><h3 class="text-lg" data-toc-id="93f0a301-60d2-48a3-992e-cf0e71805060" id="93f0a301-60d2-48a3-992e-cf0e71805060">Would love to hear your thoughts or if anyone has implemented this differently 🙌</h3>]]></content:encoded>
        </item>
    </channel>
</rss>