728x90
반응형
우선 플러터를 파이어베이스에 연동합니다.
연동 방법은 지난 게시글을 확인해주세요.
그럼 Flutter에서 Firebase를 사용하기 위해 pubspec.yaml에
firebase_core (파이어베이스 기본 패키지)와 firebase_analytics (파이어베이스 애널리틱스 패키지)를 설치합니다.
아래 링크에서 버전 확인 후에 버전 설치해주세요
https://pub.dev/packages/firebase_core/install
https://pub.dev/packages/firebase_analytics/install
모두 완료 했다면 다음 코드를 실행해 봅니다.
import 'package:firebase_analytics/firebase_analytics.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'dart:async';
void main() async{
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
// 파이어베이스 사용
static FirebaseAnalytics analytics = FirebaseAnalytics.instance; // FirebaseAnalytics();
// 사용자의 행동 관찰
static FirebaseAnalyticsObserver observer =
FirebaseAnalyticsObserver(analytics: analytics);
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
// This is the theme of your application.
//
// Try running your application with "flutter run". You'll see the
// application has a blue toolbar. Then, without quitting the app, try
// changing the primarySwatch below to Colors.green and then invoke
// "hot reload" (press "r" in the console where you ran "flutter run",
// or simply save your changes to "hot reload" in a Flutter IDE).
// Notice that the counter didn't reset back to zero; the application
// is not restarted.
primarySwatch: Colors.blue,
),
navigatorObservers: <NavigatorObserver>[observer],
home: FirebaseApp(
analytics: analytics,
observer: observer
),
);
}
}
class FirebaseApp extends StatefulWidget {
FirebaseApp({Key? key, required this.analytics, required this.observer}) :
super(key: key);
final FirebaseAnalytics analytics;
final FirebaseAnalyticsObserver observer;
@override
_FirebaseAppState createState() => _FirebaseAppState(analytics, observer);
}
class _FirebaseAppState extends State<FirebaseApp> {
_FirebaseAppState(this.analytics, this.observer);
final FirebaseAnalyticsObserver observer;
final FirebaseAnalytics analytics;
String _message = '';
void setMessage(String message) {
setState(() {
_message = message;
});
}
Future<void> _sendAnalyticsEvent() async {
// 애널리틱스의 logEvent -> Map형태로 보내기
await analytics.logEvent(name: 'event',parameters: <String, dynamic> {
'string': 'hello world',
'int' : 100,
});
setMessage('Analytics Test success');
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Firebase Example'),
),
body: Center(
child: Column(
children: <Widget>[
ElevatedButton(onPressed: _sendAnalyticsEvent, child: Text('Analytics'),),
Text(_message, style: const TextStyle(color: Colors.blueAccent),)
],
mainAxisAlignment: MainAxisAlignment.center,
),
),
floatingActionButton: FloatingActionButton(child: const Icon(Icons.tab), onPressed: () {},),
);
}
}
혹시 다음과 같은 에러가 난다면 참고하세요
GradleException 오류 수정은 아래 문자(클래스)로 대체합니다.
FileNotFoundException
그리고 버전 오류는 안내와 같이 수정합니다.
minSdkVersion 19
Analytics 버튼을 누르고 Analytics Test success 라는 Text가 뜨면 성공입니다.
그리고 파이어베이스 계정에서 확인합니다.
애널리틱스 -> Events
바로 실시간으로 반영되지 않아서 아직 뜨지 않았으니 나중에 다시 확인해보겠습니다.
반응형