Skip to main content

vwo_insights_flutter_sdk 2.7.0 copy "vwo_insights_flutter_sdk: ^2.7.0" to clipboard
vwo_insights_flutter_sdk: ^2.7.0 copied to clipboard

VWO Insights helps you analyze user behavior in your application based on interactions such as application launch, taps, scrolls, and flings.

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/my_navigator_observer.dart';
import './providers/common_provider.dart';
import './screens/profile/profile.dart';
import 'package:provider/provider.dart';
import './Screen1.dart';
import './screens/sorting/sorting_campaign.dart';
import 'demo_screen.dart';
import 'screens/user_switch/user_switch_screen.dart';
import 'screens/variable/variable_campaign.dart';
import 'screens/video/video_player_screen.dart';
import 'screens/webview/contact_webview_screen.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 dispose() {
    _streamSubscription.cancel();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    var app = MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        pageTransitionsTheme: const PageTransitionsTheme(
          builders: {
            // Right-to-left slide on Android to reproduce stale masks after a
            // screen transition.
            TargetPlatform.android: CupertinoPageTransitionsBuilder(),
          },
        ),
      ),
      routes: {
        "/": (context) => const Screen1(),
        '/third': (context) => const Screen3(),
        '/demo': (context) => const DemoScreen(),
        '/housing': (context) => const VariableCampaign(),
        '/phone': (context) => const SortingCampaign(),
        '/profile': (context) => const Profile(),
        '/userSwitch': (context) => const UserSwitchScreen(),
        '/video': (context) => const VideoPlayerScreen(),
        '/contact': (context) => const ContactWebViewScreen(),
      },
      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',
      theme: ThemeData(
        pageTransitionsTheme: const PageTransitionsTheme(
          builders: {
            TargetPlatform.android: CupertinoPageTransitionsBuilder(),
          },
        ),
      ),
      home: const 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 = const Screen1();
    } else if (route == '/demo') {
      screen = const DemoScreen();
    } else if (route == '/housing') {
      screen = const VariableCampaign();
    } else if (route == '/phone') {
      screen = const SortingCampaign();
    } else if (route == '/profile') {
      screen = const Profile();
    } else if (route == '/userSwitch') {
      screen = const UserSwitchScreen();
    } else if (route == '/video') {
      screen = const VideoPlayerScreen();
    } else if (route == '/contact') {
      screen = const ContactWebViewScreen();
    } else {
      screen = const Screen1();
    }
    VwoFlutter().screenChanged(route);
    Navigator.push(
      context,
      MaterialPageRoute(
          builder: (context) => screen
      ), // Direct navigation without named routes
    );
  }
}
3
likes
140
points
616
downloads

Documentation

API reference

Publisher

verified publishervwo.com

Weekly Downloads

VWO Insights helps you analyze user behavior in your application based on interactions such as application launch, taps, scrolls, and flings.

Homepage

License

Apache-2.0 (license)

Dependencies

flutter, flutter_web_plugins, plugin_platform_interface, visibility_detector

More

Packages that depend on vwo_insights_flutter_sdk

Packages that implement vwo_insights_flutter_sdk