5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

FlutterWebでURLからハッシュ#を取り除いたらハマった。

Posted at

FlutterWebでアプリをビルドするとUrlに#が入って不恰好になります。
これを取り除くにはmain関数でrunApp()を呼ぶ前にusePathUrlStrategyを呼んであげると取り除けます。知らんけど。

公式からの引用
import 'package:flutter_web_plugins/url_strategy.dart';

void main() {
  usePathUrlStrategy();
  runApp(ExampleApp());
}

自分はFirebase Hostingを使ってFlutter Webでビルドしたアプリを公開していたのですが、ある時ルートパス以外のページのurlを叩くと404 NotFoundエラーが返ってきていることに気づきました。
調べていると、usePathUrlStrategyで#を消していることが原因の模様。

試しにusePathUrlStrategyを呼ばずにurlに#が含まれた状態でデプロイしてみるとルートパス以外のページのurlを叩いても問題なくページが開けました。。。。はて?

検索を色々して同様の状況になっている人がそこそこいることにも気づきましたが、Flutter Webで#なしのurlのまま問題なくページが開けているサイトがあることにも気づいた頃にFlutterの公式ページに辿り着きました。。。

ここにそのまま答えが書いてありました。

Firebase Hostingの設定でSinglePageApplicationを指定する必要があるみたいです。
Firebase initをし直して、"Configure as a single-page app"の質問にYesと答えると設定してくれます。

はい、うまくいきました。
あんまり理解してませんが、SinglePageApplicationだと常にトップページのindex.htmlを参照してくれるみたいです。なんで#がないURLだとうまくいくのかはよくわからん。

最初から公式ドキュメントをちゃんと読みましょうという自戒の念を込めて記事にします。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?