如何 select 与 mysql 数据库(或 json)中的 sharedpreferences 键一起颤动以列出最喜欢的记录?
How to select with sharedpreferences keys in mysql database (or json) in flutter to list favorite records?
我想将共享首选项键保存在我的智能手机上。
键是来自 table 的 table id(自动增量)。
现在我想在新标签页中显示这些最喜欢的记录。
我如何 select 使用数据库中的这些密钥 table?
或者是否可以将它们与 json 数据集中的所有记录进行比较 我 select 在开始时显示 table?
中的所有记录
目前我正在将密钥保存在字符串中。
然后在列表视图中显示它们。
Future<void> _save() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
final key = '${widget.id}';
final value = '${widget.id}';
prefs.setString(key, value);
}
Future<List<Widget>> getAllPrefs() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
//final SharedPreferences prefs = await PrefStore().prefs;
return prefs
.getKeys()
.map<Widget>((key) => ListTile(
title: Text(key),
subtitle: Text(prefs.get(key).toString()),
))
.toList(growable: false);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: FutureBuilder<List<Widget>>(
future: getAllPrefs(),
builder: (context, snapshot) {
if (!snapshot.hasData) return Container();
return ListView(
children: snapshot.data,
);
}),
);
}
非常感谢。
我有一个很好用的好主意,见下文。
但是,如果您有更好的解决方案,请 post 也这样做。
我只为 getInstance 和 SQL-Select 使用了一个 future。
// get the keys, convert to string, change {1,2,3} to (1,2,3) with strings/substring
SharedPreferences prefs = await SharedPreferences.getInstance();
String allkeys = prefs.getKeys().toString();
keylist = '(' + allkeys.substring(1, allkeys.length - 1) + ')';
然后 select 密钥列表如下:
select * from table where table.id in $keylist
// means: ... where table.id in (1,2,3)
如果您需要更多代码,请评论,thx
我想将共享首选项键保存在我的智能手机上。 键是来自 table 的 table id(自动增量)。 现在我想在新标签页中显示这些最喜欢的记录。
我如何 select 使用数据库中的这些密钥 table? 或者是否可以将它们与 json 数据集中的所有记录进行比较 我 select 在开始时显示 table?
中的所有记录目前我正在将密钥保存在字符串中。 然后在列表视图中显示它们。
Future<void> _save() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
final key = '${widget.id}';
final value = '${widget.id}';
prefs.setString(key, value);
}
Future<List<Widget>> getAllPrefs() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
//final SharedPreferences prefs = await PrefStore().prefs;
return prefs
.getKeys()
.map<Widget>((key) => ListTile(
title: Text(key),
subtitle: Text(prefs.get(key).toString()),
))
.toList(growable: false);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: FutureBuilder<List<Widget>>(
future: getAllPrefs(),
builder: (context, snapshot) {
if (!snapshot.hasData) return Container();
return ListView(
children: snapshot.data,
);
}),
);
}
非常感谢。
我有一个很好用的好主意,见下文。 但是,如果您有更好的解决方案,请 post 也这样做。
我只为 getInstance 和 SQL-Select 使用了一个 future。
// get the keys, convert to string, change {1,2,3} to (1,2,3) with strings/substring
SharedPreferences prefs = await SharedPreferences.getInstance();
String allkeys = prefs.getKeys().toString();
keylist = '(' + allkeys.substring(1, allkeys.length - 1) + ')';
然后 select 密钥列表如下:
select * from table where table.id in $keylist
// means: ... where table.id in (1,2,3)
如果您需要更多代码,请评论,thx