将选定值的ID传递到不同的Flutter页面sqlite

时间:2018-07-18 19:31:06

标签: sqlite dart flutter

我已经创建了一个sqlite数据库,并已经用两个表tbl_genres和tbl_books填充了该数据库,我通过像这样进行原始sql查询来在颤抖的情况下调用它们。

_genreList= await db.rawQuery('SELECT genre_name[] FROM tbl_genres');

,然后使用ListView.builder将其放置到页面上,其中页面显示类型列表。

title: new Text("${_genreList[index]}")

然后,我希望能够通过onTap()方法选择一种类型,以导航到一个新页面,该页面显示该特定类型中tbl_books中的所有书籍。为此,我尝试获取所选类型的ID,并将其传递到下一页,以便在下一页上的原始sql查询中执行类似的操作。

select * from tbl_books where genre_id = (passed id of selected value)

如何插入数据以显示与“类型”相关的所有数据“书”?

2 个答案:

答案 0 :(得分:0)

首先:建立一个新页面,将其称为“ DetailsPage”,并将其放入details.dart文件

import 'package:flutter/material.dart';
class DetailsPage extends StatefulWidget {

  int id;

  DetailsPage({this.id});

  @override
  _DetailsPageState createState() => new _DetailsPageState();
}

class _DetailsPageState extends State<DetailsPage> {

  final int id;
  _DetailsPageState({this.id});

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    // get the data from db here
    print("id is : " + id.toString());
  }

  @override
  Widget build(BuildContext context) {


    return new Scaffold(
      // in app bar you can modify the themes, the bar .. etc
        appBar: new AppBar(
          title: new Text("title"),
        ),
        body: new Text("Details Container ")
    );
  }


}

现在在您的listView视图中,导入此文件“ details.dart” 现在您可以导航到它:

new GestureDetector(
   onTap: (){
     Navigator.push(context, new MaterialPageRoute(builder: (context)=> new DetailsPage(id: 5,)));
  },
   child: new Text("id : 5"),
   )

将ID传递到下一页,然后可以使用

select * from tbl_books where genre_id = 5

答案 1 :(得分:0)

只想问你表tbl_genres内的哪些列? 如果我假设应该有一个名为id的表,并且根据您的要求它包含整数值,您可以执行的操作是在@Yousuf Al-Mawali {{1} }并且你很好。 Link to his answer here