San*_*inh 12 flutter flutter-web
我们可以在 Flutter Web 应用程序中实现 Firebase Analytics 吗?如果没有,还有其他选择吗?
小智 16
从 firebase 7.0.0 ( https://pub.dev/packages/firebase/versions/7.0.0 ) 开始,您可以在 Flutter Web 应用程序中使用分析。
以下是步骤:
<body>
<!-- Initialize Firebase -->
<script src="/__/firebase/7.6.1/firebase-app.js"></script>
<script src="/__/firebase/7.6.1/firebase-analytics.js"></script>
<script src="/__/firebase/init.js"></script>
<!-- Initialize app -->
<script src="main.dart.js" type="application/javascript"></script>
</body>
Run Code Online (Sandbox Code Playgroud)
import 'package:firebase/firebase.dart';
Run Code Online (Sandbox Code Playgroud)
class AnalyticsRouteObserver extends RouteObserver<PageRoute<dynamic>> {
final Analytics analytics;
AnalyticsRouteObserver({@required this.analytics});
void _sendPageView(PageRoute<dynamic> route) {
var pageName = route.settings.name;
if (null != analytics) {
analytics.setCurrentScreen(pageName);
} else {
print('pageName: $pageName');
}
}
@override
void didPush(Route<dynamic> route, Route<dynamic> previousRoute) {
super.didPush(route, previousRoute);
if (route is PageRoute) {
_sendPageView(route);
}
}
@override
void didReplace({Route<dynamic> newRoute, Route<dynamic> oldRoute}) {
super.didReplace(newRoute: newRoute, oldRoute: oldRoute);
if (newRoute is PageRoute) {
_sendPageView(newRoute);
}
}
@override
void didPop(Route<dynamic> route, Route<dynamic> previousRoute) {
super.didPop(route, previousRoute);
if (previousRoute is PageRoute && route is PageRoute) {
_sendPageView(previousRoute);
}
}
}
Run Code Online (Sandbox Code Playgroud)
import 'dart:js' as js;
...
Widget build(BuildContext context) {
return MaterialApp(
navigatorObservers: [AnalyticsRouteObserver(analytics: js.context.hasProperty('firebase')?analytics():null)],
...
}
Run Code Online (Sandbox Code Playgroud)
tom*_*ozb 12
首先导入 Firebase
import 'package:firebase/firebase.dart' as Firebase;
Run Code Online (Sandbox Code Playgroud)
更新 index.html
<body>
<script src="https://www.gstatic.com/firebasejs/7.9.1/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.9.1/firebase-analytics.js"></script>
<script>
var firebaseConfig = {
apiKey: "AIzaxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
authDomain: "xxxxxxxxx.firebaseapp.com",
databaseURL: "https://xxxxxxxx.firebaseio.com",
projectId: "xxxxxx",
storageBucket: "xxxxxxx.appspot.com",
messagingSenderId: "xxxxxxxxxxxxx",
appId: "x:xxxxxxxxxxxx:web:xxxxxxxxxxxxxxxx",
measurementId: "G-xxxxxxxxx"
};
firebase.initializeApp(firebaseConfig);
</script>
<script src="main.dart.js" type="application/javascript"></script>
</body>
Run Code Online (Sandbox Code Playgroud)
并记录事件
final analytics = Firebase.analytics();
analytics.logEvent("event_name", {});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4108 次 |
| 最近记录: |