vwo_insights_flutter_sdk 0.0.1
vwo_insights_flutter_sdk: ^0.0.1 copied to clipboard
VWO Mobile Insights SDK for tracking user behavior.
example/lib/main.dart
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:vwo_insights_flutter_sdk/vwo_insights_flutter_sdk.dart';
import 'package:vwo_insights_flutter_sdk_example/Screen3.dart';
import 'package:vwo_insights_flutter_sdk_example/utils/MyNavigatorObserver.dart';
import './providers/CommonProvider.dart';
import './screens/profile/profile.dart';
import 'package:provider/provider.dart';
import './Screen1.dart';
import './screens/sorting/sorting_campaign.dart';
import 'DemoScreen.dart';
import 'screens/variable/variable_campaign.dart';
const bool useRoutes = true;
void main() {
if (useRoutes) {
runApp(const MyApp());
} else {
runApp(const MyAppNoRoute());
}
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
late StreamSubscription<int> _streamSubscription;
@override
void initState() {
super.initState();
/*VwoFlutter.startRecording();
final screenshotStream =
Stream.periodic(const Duration(seconds: 1), (count) => count);
_streamSubscription = screenshotStream.listen((event) {
VwoFlutter.captureScreenshot(screenshotController);
});*/
}
@override
void dispose() {
_streamSubscription.cancel();
super.dispose();
}
@override
Widget build(BuildContext context) {
var app = MaterialApp(
title: 'Flutter Demo',
routes: {
"/": (context) => Screen1(),
'/test': (context) => const DemoScreen(),
'/third': (context) => const Screen3(),
'/demo': (context) => const DemoScreen(),
'/housing': (context) => VariableCampaign(),
'/phone': (context) => SortingCampaign(),
'/profile': (context) => const Profile(),
},
navigatorObservers: [
VwoNavigatorObserver(),
MyNavigatorObserver(),
],
);
return MultiProvider(
providers: [ChangeNotifierProvider(create: (_) => CommonProvider())],
child: app,
);
}
}
class MyAppNoRoute extends StatefulWidget {
const MyAppNoRoute({super.key});
@override
State<MyAppNoRoute> createState() => _MyAppNoRoute();
}
class _MyAppNoRoute extends State<MyAppNoRoute> {
late StreamSubscription<int> _streamSubscription;
@override
void dispose() {
_streamSubscription.cancel();
super.dispose();
}
@override
Widget build(BuildContext context) {
var app = MaterialApp(
title: 'Flutter Demo No routes',
home: Screen1(),
);
VwoFlutter().screenChanged("/");
return MultiProvider(
providers: [ChangeNotifierProvider(create: (_) => CommonProvider())],
child: app,
);
}
}
void showScreen(BuildContext context, String route) {
if (useRoutes) {
Navigator.of(context).pushNamed(route);
} else {
Widget screen;
if (route == '/third') {
screen = const Screen3();
} else if (route == '/') {
screen = Screen1();
} else if (route == '/test') {
screen = DemoScreen();
} else if (route == '/demo') {
screen = DemoScreen();
} else if (route == '/housing') {
screen = VariableCampaign();
} else if (route == '/phone') {
screen = SortingCampaign();
} else if (route == '/profile') {
screen = const Profile();
} else {
screen = Screen1();
}
VwoFlutter().screenChanged(route);
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
screen), // Direct navigation without named routes
);
}
}