如何在flutter中使用mysql数据库(或json)中的sharedpreferences键选择以列出最喜欢的记录?
Posted
技术标签:
【中文标题】如何在flutter中使用mysql数据库(或json)中的sharedpreferences键选择以列出最喜欢的记录?【英文标题】:How to select with sharedpreferences keys in mysql database (or json) in flutter to list favorite records? 【发布时间】:2021-06-24 05:31:53 【问题描述】:我想将共享首选项键保存在我的智能手机上。 键是表中的表 ID(自动增量)。 现在我想在新标签中显示这些最喜欢的记录。
如何在我的数据库表中使用这些键进行选择? 或者是否可以将它们与我在开始时选择的 json 数据集中的所有记录进行比较以显示表中的所有记录?
目前我正在将键保存在字符串中。 然后在列表视图中显示它们。
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,
);
),
);
非常感谢。
【问题讨论】:
【参考方案1】:我有一个很好的想法,它可以正常工作,见下文。 但如果您有更好的解决方案,也请发布。
我只为 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) + ')';
然后用 keylist 选择如下:
select * from table where table.id in $keylist
// means: ... where table.id in (1,2,3)
如果您需要更多代码,请发表评论,谢谢
【讨论】:
以上是关于如何在flutter中使用mysql数据库(或json)中的sharedpreferences键选择以列出最喜欢的记录?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 MySQL 中使用 Flutter 和 php 上传图片
使用 PHP Mysql Flutter 用户特定的推送通知
如何使用Flutter将数据SQLite(离线)发送到服务器MySQL?