使用 sqlite 下拉 - Flutter

Posted

技术标签:

【中文标题】使用 sqlite 下拉 - Flutter【英文标题】:Drop Down with sqlite - Flutter 【发布时间】:2019-05-19 04:55:01 【问题描述】:

我有数据库 sqlite 数据,我想在下拉列表中显示我的数据,并更改表中行的 id,因为将来我想创建另一个下拉列表以更改为第一个下拉列表的值,任何人都可以提供帮助吗?

【问题讨论】:

见this question 【参考方案1】:

在 Flutter 上使用 SQLite

要从 SQLite 数据库收集数据,您可以使用 sqflite plugin(如果是 iosandroid 设备,则独立)。您必须将依赖项添加到您的pubspec.yaml

dependencies:
  ...
  sqflite: any

当您想使用 sqflite 时,您必须导入库。

import 'package:sqflite/sqflite.dart';

接下来,你必须打开一个到 SQLite 的连接,这里我们创建一个表以防你没有一个表

Database database = await openDatabase(path, version: 1,
    onCreate: (Database db, int version) async 
  await db.execute(
      'CREATE TABLE Test (id INTEGER PRIMARY KEY, name TEXT, value INTEGER, num REAL)');
);

您可以使用database.rawQuery 插入或检索数据。

插入:

int primaryKeyInsertedRow = await database.rawQuery('INSERT INTO Test(name, value, num) VALUES("some name", 1234, 456.789)');

选择:

List<Map> list = await database.rawQuery('SELECT * FROM Test');

完成后记得关闭数据库。

await database.close();

显示下拉菜单列表

为了显示您首先检索到的数据,您必须创建一个扩展 StatefulWidget 的类,覆盖 createState() 方法,并设置您自己的状态(在本例中为 SettingWidgetState

@override
_SettingsWidgetState createState() => new _SettingsWidgetState();

其次,您应该为它定义一个状态,定义一个扩展State&lt;NameOfYourWidget&gt; 的类。在该类中,您应该有一个 DropdownMenuItem&lt;String&gt; 列表和当前选定元素的字符串成员。

为方便起见,在本例中,我们将使用静态城市列表:

List _cities = [
  "Cluj-Napoca",
  "Bucuresti",
  "Timisoara",
  "Brasov",
  "Constanta"
];

接下来,我们覆盖initState(),将DropDownMenuItem 列表设置为我们的列表和当前选定的列表元素。之后我们应该打电话给super.initState()

另外,我们需要重写build() 方法。目标是返回一个包含DropDownButtonContainer,并且DropDownButton 已分配项目列表(在类中定义)、选定元素(也在类中定义)和事件处理程序onChanged: 属性(这里还插入了其他小部件,目的是让它看起来不错)

@override
Widget build(BuildContext context) 
  return new Container(
    color: Colors.white,
    child: new Center(
        child: new Column(
      crossAxisAlignment: CrossAxisAlignment.center,
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        new Text("Please choose your city: "),
        new Container(
          padding: new EdgeInsets.all(16.0),
        ),
        new DropdownButton(
          value: _currentCity,
          items: _dropDownMenuItems,
          onChanged: changedDropDownItem,
        )
      ],
    )),
  );

最后,我们定义从列表中选择新项目时将调用的方法(在我们的示例中为changeDropDownItem(string selectedCity))。

  void changedDropDownItem(String selectedCity) 
    setState(() 
      _currentCity = selectedCity;
    );
  

Link 我的答案基于下拉列表。你也可以看看getting started with sqflite plugin

【讨论】:

答案中的链接应用作补充资源或引用。请不要依赖他们来获得大部分答案。链接可能会失效,或者可以更改另一端的信息以不再回答问题。请编辑您的答案以包含您链接到的信息。 我修改了帖子以实际回答问题,抱歉只提供链接 我想我会感谢你的回答,但我知道如何实现数据库我的问题是从下拉列表中显示,但现在解决了

以上是关于使用 sqlite 下拉 - Flutter的主要内容,如果未能解决你的问题,请参考以下文章

使用 Datagrip 浏览 Android SQLite

将下拉菜单中的值传递给 Flask 模板

Active Admin - 根据第一个下拉菜单刷新第二个下拉菜单,Ruby on Rails

Android仿QQ登录下拉历史列表

从 QComboBox 中选择字符串并将 ID 插入 SQLite db

Flutter 1.0 正式版发布