我是新手。我正在制作一个应用程序,它在应用程序第一次使用时,在第一个屏幕上输入一个电话号码。从下一次开始,我希望应用程序跳过第一个屏幕,直接进入下一个屏幕。但我无法实现此功能。请帮助。谢谢你。
import 'package:shared_preferences/shared_preferences.dart';
class PrefShare {
String mob;
bool isNew;
Future<String> spNumberSetter(String no) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString('phoneNumber', no);
}
Future<String> spNumberGetter() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
mob = prefs.getString('phoneNumber');
}
Future<bool> spAppNew() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setBool('isLoggedIn', true);
}
Future<bool> spAppGetter() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
isNew = prefs.getBool('isLoggedIn');
}
}
//main
import 'package:emergency_messaging/button_screen.dart';
import 'package:flutter/material.dart';
import 'prefs.dart';
PrefShare prefShare = PrefShare();
void main() {
WidgetsFlutterBinding.ensureInitialized();
prefShare.spAppGetter();
bool status = prefShare.isNew ?? false;
prefShare.spAppNew();
runApp(
MaterialApp(home: status == true ? ButtonScreen() : Home()),
);
}
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
@override
Widget build(BuildContext context) {
String phoneNo;
return SafeArea(
child: Scaffold(
backgroundColor: Color(0xff9ad3bc),
floatingActionButton: FloatingActionButton(
backgroundColor: Colors.black,
child: Icon(
Icons.arrow_forward,
color: Color(0xff9ad3bc),
),
onPressed: () {
showDialog(
context: context,
builder: (context) {
return AlertDialog(
title: Text("Confirmation"),
content: SingleChildScrollView(
child: ListBody(
children: <Widget>[
Text("The phone number entered is: $phoneNo"),
],
),
),
actions: <Widget>[
FlatButton(
child: Text("Cancel"),
onPressed: () {
Navigator.pop(context);
},
),
FlatButton(
child: Text("Continue"),
onPressed: () {
prefShare.spNumberSetter(phoneNo);
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ButtonScreen()));
},
),
],
);
},
);
},
),
body: Padding(
padding: EdgeInsets.all(8.0),
child: Column(
children: [
SizedBox(
height: 150.0,
),
TextField(
style: TextStyle(color: Colors.black,),
decoration: InputDecoration(
hintText: "Your emergency contact number",
hintStyle: TextStyle(color: Colors.black,),
enabledBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Colors.black,),
),
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Colors.black,),
),
),
keyboardType: TextInputType.phone,
autofocus: true,
cursorColor: Colors.black,
onChanged: (text) {
phoneNo = text;
},
),
],
),
),
),
);
}
}
我认为您的问题来自以下方面:prefshare.spappgetter();
由于future
是一个返回未来的异步函数,所以您应该使用await
调用它,以便在调用bool status=prefshare.isnew之前确保spAppGetter已经完成??false;
要做到这一点,您还应该将主函数标记为异步。您的主要功能如下所示:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await prefShare.spAppGetter();
bool status = prefShare.isNew ?? false;
prefShare.spAppNew();
runApp(
MaterialApp(home: status == true ? ButtonScreen() : Home()),
);
}
本文向大家介绍javascipt:filter过滤介绍及使用,包括了javascipt:filter过滤介绍及使用的使用技巧和注意事项,需要的朋友参考一下 javascipt : filter 过滤 filter是new一个新的array,然后给他过滤后的对象,最后var list 起来
主要内容:.loc[],.iloc[]在数据分析过程中,很多时候需要从数据表中提取出相应的数据,而这么做的前提是需要先“索引”出这一部分数据。虽然通过 Python 提供的索引操作符 和属性操作符 可以访问 Series 或者 DataFrame 中的数据,但这种方式只适应与少量的数据,为了解决这一问题,Pandas 提供了两种类型的索引方式来实现数据的访问。 本节就来讲解一下,如何在 Pandas 中使用 loc 函数和 iloc
本文向大家介绍document.forms用法示例介绍,包括了document.forms用法示例介绍的使用技巧和注意事项,需要的朋友参考一下 概述 forms 返回一个集合 (一个HTMLCollection对象),包含了了当前文档中的所有form元素. 语法 var collection = document.forms; 例子 获取表单信息
1.5 ABP总体介绍 - 多租户 1.5.1 什么是多租户 维基百科:“软件多租户是指一个软件架构的实例软件运行在一个服务器上,但存在多个租户。租户是一组共享一个公共的用户访问特定权限的软件实例。多租户架构,软件应用程序旨在提供每个租户专用的实例包括数据、配置、用户管理、租户个体功能和非功能属性。多租户与多实例架构,独立的软件实例代表不同的租户”操作多租户一般用来创建SaaS(软件即服务)应用程
基本概念 人脸检测 人脸检测是指从一副静态的图像中检测并标记出人脸所在的区域, 并且给出表示人脸的矩形坐标(左上角坐标和右下角坐标, 其中图像左上角坐标是(0,0), 右下角坐标是(n,m), n,m分别为图像的像素宽度和高度)。在0.2, 0.3版的服务中增加了人脸的性别与年龄信息。 人脸检测有着广泛的用途, 比如(1): 智能驾驶辅助系统,能自动识别出道路前方的人脸, 并及时提醒驾驶人注意前方
关于 Filter 的 API 有下面几个: Filter() Filter NumFilter() int FilterByIndex(index int) Filter SetFilter(filter ...Filter) Client | Service AddFilter(filter ...Filter) Client | Service RemoveFilterByIndex(ind