Страница с инструкциями, которая загружается только после установки - PullRequest
1 голос
/ 20 марта 2020

У меня в приложении есть страница, на которой есть значки и анимация о том, как использовать приложение.
Я хочу загрузить эту страницу при первом запуске после установки, а затем я хочу, чтобы любой другой запуск приложения go прямо на домашнюю страницу.
Как это можно сделать?
Я видел пару потоков, которые путают этот вопрос с экранами spla sh, я хочу, чтобы эта страница запускалась только один раз после установки, а затем больше никогда. Спасибо

1 Ответ

1 голос
/ 20 марта 2020

Вы должны создать экран spla sh и на этой странице проверить общие предпочтения, которые сообщают вам, если вы уже показывали вводную страницу или нет, если вы показывали эту страницу, вы можете перейти на главную страницу, в противном случае перейдите на вводную страницу в показе вступительной страницы. все, что вы хотите показать, и когда вступление закончится, установите isIntroShowed или значение true в общем предпочтении, как показано ниже: код

import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
 return MaterialApp(
   title: 'Flutter Demo',
   theme: ThemeData(
     primarySwatch: Colors.blue,
   ),
   home: SplashScreen(),
 );
}
}

class SplashScreen extends StatefulWidget {
SplashScreen({Key key}) : super(key: key);

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

class _SplashScreenState extends State<SplashScreen> {
@override
void initState() {
    SharedPreferences.getInstance().then((prefs){
      var isShowed =prefs.getBool("isIntroShowed");
      if(isShowed!=null && isShowed) 
      {
        //navigate to main page
      }
      else{
        //navigate to intro page 
      }
    });

 super.initState();
}
@override
Widget build(BuildContext context) {
 return Scaffold(
   body: Center(child: CircularProgressIndicator(),),
 );
}
}

class IntroPage extends StatelessWidget {
const IntroPage({Key key}) : super(key: key);

@override
Widget build(BuildContext context) {
return Scaffold(
 body: Center(
   child:FlatButton(child: Text('intro done'),onPressed: ()async{
      SharedPreferences prefs = await SharedPreferences.getInstance();
      await prefs.setBool('isIntroShowed', true);
      // navigate to main content
   },)
 ),
);
}
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...