Как я могу сделать, если видел проверку на заставке?Если экран прохождения уже виден - PullRequest
0 голосов
/ 29 сентября 2019

Я делаю первое приложение-заставку, за которым следует страница пошагового руководства, если пользователь впервые использовал приложение, в противном случае перейдите на страницу приветствия, чтобы войти в систему или зарегистрироваться, если вы уже видели экран пошагового руководства.

Мой код пришел из файла main.dart этого проекта: https://github.com/instaflutter/flutter-login-screen-firebase-auth-facebook-login и изменил его к этому коду (из учебника по всплывающему экрану FlutterKart)

import 'dart:async';
import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:binder/ui/screens/root_screen.dart';
import 'package:binder/ui/screens/walk_screen.dart';


void main() {
   Firestore.instance.settings(timestampsInSnapshotsEnabled: true);
   SharedPreferences.getInstance().then((prefs) {
   SplashScreen(prefs: prefs);
});
}

   class SplashScreen extends StatefulWidget {  
     final SharedPreferences prefs;
     SplashScreen({Key key,this.prefs}): super(key: key);

     @override
     _SplashScreenState createState() => _SplashScreenState();
     }

   class _SplashScreenState extends State<SplashScreen> {

    @override
   void initState() {
   super.initState();
   Timer(Duration(seconds: 3), () => _handleCurrentScreen(context));
   }

    @override
  Widget build(BuildContext context) {
     final logowhite = Hero(
      tag: 'hero',
      child: //code insert flutterkart splashscreen
                )
              ],
            ),
          )
        ],
      )
    ],
  ),
);
}
 Widget _handleCurrentScreen (BuildContext context) {
bool seen = (widget.prefs.getBool('seen') ?? false);
if (seen) {
  return new RootScreen();
} else {
  return new WalkthroughScreen(prefs: widget.prefs);
}
}
}

Я хочу, чтобы он сначала показывал заставку и был направлен накорневой экран, если он уже виден, и экран пошагового руководства, если в первый раз использовать.

1 Ответ

0 голосов
/ 01 октября 2019

Возможно, вы захотите использовать shared_preferences или что-то подобное.Как то так:

// add this static variable somewhere
// could technically be initialized during splash screen and added to a Provider or something similar after
static SharedPreferences prefs;

// make `main` async if it is not already
Future<void> main() async {
  prefs = await SharedPreferences.getInstance();

  ...
}

Future<void> onSplashScreenDone() async {
  if (prefs.getBool('isFirstTime') ?? true) {
    // you might want to put this at the end of your walkthrough, so they don't miss it if they close the app, for example
    await prefs.setBool('isFirstTime', false);

    // this is their first time, show walkthrough, etc.
    ...
  } else {
    // this is not their first time, do normal things.
  }
}
...