【发布时间】:2021-11-22 06:01:35
【问题描述】:
我在 Flutter 应用中有一个 sqflite 表来存储用户详细信息。对于我正在使用提供程序的应用程序的状态管理。我在这个应用程序中有两个模型,一个用于 api 调用,另一个用于 sqflite 表。
这是从api获取用户数据的模型
// PS. The class structure
class UserDetails {
String? id;
bool? mobileVerified;
String? resentOtp;
String? email;
String? regmail;
List<UserDeviceDetails>? deviceDetails;
List<UserLocationDetails>? locationDetails;
List<String>? deviceId;
String? userValidCode;
String? leadstatus;
bool? dailyMail;
bool? weeklyMail;
bool? promotionalMail;
bool? trValid;
String? userType;
String? createdAt;
String? updatedAt;
int? otp;
bool? emailVerified;
List<UserAccount>? accounts;
}
用户表的模型如下
class UserTable {
int? id;
String? accountDetails;
String? accountId;
String? childName;
String? childGender;
int? expiry;
int? finalSequenceNo;
int? packageIndex;
String? parentName;
String? productType;
String? userId;
int? age;
int? dob;
int? nextSyncTime;
String? productSubType;
String? validTill;
int? latestUpdatePkgSeqNo;
int? guidedTour;
}
用于检查(在启动画面内)用户是否已登录和路由,我依赖于这个用户表,并且还从这个表向提供者推送值。
_dbHelper.getAllUserData().then((value) {
String routeName = value.length > 0
? HomeScreen.routeName
: IntroductionScreen.routeName;
print('navigate to next page' + routeName);
if(value.length>0){
Provider.of<UserProvider>(context,listen: false).setuserProvider(value[0]);
}
如果表中存在值,上述代码会将值推送给提供者。我遇到的问题是用户第一次登录时(现在我需要重新启动应用程序以供提供商获取值)。我希望在将数据存储到用户表的同时将值推送到提供程序中。提供者如下所示。
class UserProvider with ChangeNotifier{
UserTable? user;
void setuserProvider(UserTable userdata){
user=userdata;
notifyListeners();
}
UserTable? get userdata{
return user;
}
}
//Function to insert details inside user table
Future _insertuserDetails(UserDetails? userDetails) async{
if(userDetails != null){
await _dbhelper!.insertUserDetails(userDetails);
我使用 insertfunction 将 userdetails 的值插入到 userTable(table)。如何将其传递给提供者
【问题讨论】:
标签: flutter flutter-provider sqflite