Flutter Remove The Hashtag From URL

Flutter Remove The Hashtag From URL

Profile image
Almog Koren
Dec 02, 2024 • 1 min read

As you know, Flutter web is a single-page app (SPA), and like most SPA apps, they add a hashtag in the URL, which is fine in the majority of SPA frameworks like ReactVue, or Angular as they support server-side rendering or have options for this. Still, in Flutter web currently, as of version 2.2, there is no support for this.

The issue that I ran into was using Firebase hosting and Firebase rewrites. Now, this might not be a big deal if you're hosting your app on a different server or using a different backend.

But in my case, I need to use Firebase rewrites to support open graph meta tags (tutorial blog post about this coming out soon) and as I'm using URL fragments in the URL (#). Everything after the # in the URL is never sent to the server and cannot be used as the basis of Firebase Hosting rewrites.

There is an easy fix using the url_strategy Flutter package;

of course, I'm sure there are other ways to remove the hashtag, but I wanted something simple, easy, and fast.

Here is a quick setup guide you can also find this on the package readme

flutter pub add url_strategy
import 'package:url_strategy/url_strategy.dart';

void main() {
  // Here we set the URL strategy for our web app.
  // It is safe to call this function when running on mobile or desktop as well.
  setPathUrlStrategy();
  runApp(MyApp());
}

That's it