Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何根据输入的TextField值显示MySQL查询结果_Flutter_Flutter Listview_Flutter Card - Fatal编程技术网

Flutter 如何根据输入的TextField值显示MySQL查询结果

Flutter 如何根据输入的TextField值显示MySQL查询结果,flutter,flutter-listview,flutter-card,Flutter,Flutter Listview,Flutter Card,我对Flatter还比较陌生,希望了解如何根据用户输入的TextField值显示MySQL查询结果 因为我是一个新手,所以我从其他教程中搜集了一些零碎的东西,试图取得成果 如果能得到一些帮助,我将不胜感激,因为我已经为此苦苦挣扎了好几个星期。这是对我问题的重新编辑,因为我试图更具描述性,希望有人能提供帮助。多谢各位 这是我的MySQL表: 这是我的PHP文件(flatter_data.PHP) 我做了一个测试,看看我的PHP文件是否可以在没有WHERE子句的情况下工作。下面运行我的PHP文件

我对Flatter还比较陌生,希望了解如何根据用户输入的TextField值显示MySQL查询结果

因为我是一个新手,所以我从其他教程中搜集了一些零碎的东西,试图取得成果

如果能得到一些帮助,我将不胜感激,因为我已经为此苦苦挣扎了好几个星期。这是对我问题的重新编辑,因为我试图更具描述性,希望有人能提供帮助。多谢各位

这是我的MySQL表:

这是我的PHP文件(flatter_data.PHP)

我做了一个测试,看看我的PHP文件是否可以在没有WHERE子句的情况下工作。下面运行我的PHP文件

我的主屏幕由文本字段、图像、平面按钮组成

设置类变量:


 int studentID;
 String studentName;
 int studentPhoneNumber;
 String studentSubject;

  Studentdata({
    this.studentID,
    this.studentName,
    this.studentPhoneNumber,
    this.studentSubject
  });

  factory Studentdata.fromJson(Map<String, dynamic> json) {
    return Studentdata(
      studentID: json['id'],
      studentName: json['student_name'],
      studentPhoneNumber: json['student_phone_number'],
      studentSubject: json['student_class']

    );
  }
}

我的扁平按钮已按下:

onPressed: () {


                  var route = new MaterialPageRoute(

                    builder: (BuildContext context) => new NextPageState(name.toString(),                           


                  ));
                  Navigator.of(context).push(route);
                },
下一页的以下代码:

class NextPageState extends StatefulWidget {

  final String name;

  NextPageState(this.name);

  @override

  State<StatefulWidget> createState() {

    return NextPage(this.name);

  }
}

class NextPage extends State<NextPageState> {

  final String name ;

  NextPage(this.name);

  // API URL
  var url = 'https://www.datashine.co.za/flutter_data.php';

  Future<List<Studentdata>> fetchStudent() async {

    var data = {'name': name};

    var response = await http.post(url, body: json.encode(data));

    if (response.statusCode == 200) {

      print(response.statusCode);

      final items = json.decode(response.body).cast<Map<String, dynamic>>();

      List<Studentdata> studentList = items.map<Studentdata>((json) {
        return Studentdata.fromJson(json);
      }).toList();

      return studentList;

      }

    else {
      throw Exception('Failed to load data from Server.');
    }
  }

  @override
Widget build(BuildContext context) {
  return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text(name),
          automaticallyImplyLeading: true,
          leading: IconButton(icon:Icon(Icons.arrow_back),
          onPressed:() => Navigator.pop(context, false),
        )
      ),
      body: FutureBuilder<List<Studentdata>>(
      future: fetchStudent(),
      builder: (context, snapshot) {

      if (!snapshot.hasData) return Center(
        child: CircularProgressIndicator()
      );

        return ListView(
      children: snapshot.data
      .map((data) => Column(children: <Widget>[

        GestureDetector(
          onTap: (){print(data.studentName);},
          child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [

          Padding(
          padding: EdgeInsets.fromLTRB(0, 20, 0, 10),
          child: Text('Name = ' + data.studentName.toString(),
            style: TextStyle(fontSize: 21))),



                  ]),)
                 ],))
           .toList(),
              );
             },
            )
          ));
         }
        }
class NextPageState扩展了StatefulWidget{
最后的字符串名;
下一个妊娠期(此名称);
@凌驾
状态createState(){
返回下一页(此名称);
}
}
类下一页扩展状态{
最后的字符串名;
下一页(此名称);
//API URL
var url='1〕https://www.datashine.co.za/flutter_data.php';
Future fetchStudent()异步{
变量数据={'name':name};
var response=wait http.post(url,body:json.encode(data));
如果(response.statusCode==200){
打印(响应状态码);
final items=json.decode(response.body.cast();
List studentList=items.map((json){
返回Studentdata.fromJson(json);
}).toList();
返回学生名单;
}
否则{
抛出异常('未能从服务器加载数据');
}
}
@凌驾
小部件构建(构建上下文){
返回材料PP(
家:脚手架(
appBar:appBar(
标题:文本(名称),
自动嵌入:正确,
前导:图标按钮(图标:图标(图标。箭头向后),
onPressed:()=>Navigator.pop(上下文,false),
)
),
正文:未来建设者(
future:fetchStudent(),
生成器:(上下文,快照){
如果(!snapshot.hasData)返回中心(
子对象:循环进程指示器()
);
返回列表视图(
子项:snapshot.data
.map((数据)=>列(子项:[
手势检测器(
onTap:(){print(data.studentName);},
子:列(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
填充物(
填充:从LTRB(0,20,0,10)开始的边缘设置,
子项:Text('Name='+data.studentName.toString(),
样式:TextStyle(fontSize:21)),
]),)
],))
.toList(),
);
},
)
));
}
}
运行应用程序时,似乎没有返回任何结果。所以我不知道如何修复。Circularprogress指示器只是加载和挂起


我已经实现了类似的功能。我根据变量中textField的onValueChanged参数将textField值存储在变量中,按下按钮时,我将该变量传递到下一个屏幕,在第二个屏幕的init状态下,我启动数据库查询。此查询将返回一个列表,并将其存储在适当的变量中,然后根据需要在listViewBuilder中进行设置。希望这个逻辑能对你有用。@Sanket Vekariya我能看到你所做的一切。由于我是一个全新的颤振者,我会通过一个示例代码更好地理解。抱歉,目前无法共享,否则我已经共享了。您可以尝试实现这一点。如果您在这方面遇到任何问题,您可以在此处发表评论以寻求帮助。:)@Sanket Vekariya。谢谢哦。我将尝试并实施。我将记录并发布进度。感谢you@SanketVekariya我重新编辑了我的问题。我面临一些问题,并发表评论寻求帮助。请您帮忙:-)我已经实现了类似的事情。我根据变量中textField的onValueChanged参数将textField值存储在变量中,按下按钮时,我将该变量传递到下一个屏幕,在第二个屏幕的init状态下,我启动数据库查询。此查询将返回一个列表,并将其存储在适当的变量中,然后根据需要在listViewBuilder中进行设置。希望这个逻辑能对你有用。@Sanket Vekariya我能看到你所做的一切。由于我是一个全新的颤振者,我会通过一个示例代码更好地理解。抱歉,目前无法共享,否则我已经共享了。您可以尝试实现这一点。如果您在这方面遇到任何问题,您可以在此处发表评论以寻求帮助。:)@Sanket Vekariya。谢谢哦。我将尝试并实施。我将记录并发布进度。感谢you@SanketVekariya我重新编辑了我的问题。我面临一些问题,并发表评论寻求帮助。请您帮忙:-)
onPressed: () {


                  var route = new MaterialPageRoute(

                    builder: (BuildContext context) => new NextPageState(name.toString(),                           


                  ));
                  Navigator.of(context).push(route);
                },
class NextPageState extends StatefulWidget {

  final String name;

  NextPageState(this.name);

  @override

  State<StatefulWidget> createState() {

    return NextPage(this.name);

  }
}

class NextPage extends State<NextPageState> {

  final String name ;

  NextPage(this.name);

  // API URL
  var url = 'https://www.datashine.co.za/flutter_data.php';

  Future<List<Studentdata>> fetchStudent() async {

    var data = {'name': name};

    var response = await http.post(url, body: json.encode(data));

    if (response.statusCode == 200) {

      print(response.statusCode);

      final items = json.decode(response.body).cast<Map<String, dynamic>>();

      List<Studentdata> studentList = items.map<Studentdata>((json) {
        return Studentdata.fromJson(json);
      }).toList();

      return studentList;

      }

    else {
      throw Exception('Failed to load data from Server.');
    }
  }

  @override
Widget build(BuildContext context) {
  return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text(name),
          automaticallyImplyLeading: true,
          leading: IconButton(icon:Icon(Icons.arrow_back),
          onPressed:() => Navigator.pop(context, false),
        )
      ),
      body: FutureBuilder<List<Studentdata>>(
      future: fetchStudent(),
      builder: (context, snapshot) {

      if (!snapshot.hasData) return Center(
        child: CircularProgressIndicator()
      );

        return ListView(
      children: snapshot.data
      .map((data) => Column(children: <Widget>[

        GestureDetector(
          onTap: (){print(data.studentName);},
          child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [

          Padding(
          padding: EdgeInsets.fromLTRB(0, 20, 0, 10),
          child: Text('Name = ' + data.studentName.toString(),
            style: TextStyle(fontSize: 21))),



                  ]),)
                 ],))
           .toList(),
              );
             },
            )
          ));
         }
        }