اذهب إلى المحتوى
  • 0

فتلرة مجموعة من البيانات في listview في flutter

Flutter Dev

السؤال

تحيه طيبه للجميع

قمت بعمل صفحة لعمل تصفية للبيانات لعرضها للمستخدم بعد التصفية الكود يعمل ولكن المشكلة استطيع فقط الان عمل تصفية او فلترة لمتغير واحد فقط شاهد الكود التالي:


import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;


Future main() async {runApp(testpage(),);
}

class testpage extends StatefulWidget {

  @override
  _testpageState createState() => _testpageState();
}

class _testpageState extends State<testpage> {

  @override
  void initState() {
    getData();
    super.initState();
  }

  List listsearch = [];
  List ? datas;

  Future<String> getData() async {
    var response = await http.get(
        Uri.parse("https://jsonplaceholder.typicode.com/comments"),
        headers: {
          "Accept": "application/json"
        }
    );
    this.setState(() {
      datas = json.decode(response.body);
    });
    for (int i = 0; i < datas!.length; i++) {
      listsearch.add(datas![i]['name'].toString()+ ':' + datas![i]['email'].toString() );
      print(listsearch.toString());

    }

    return "Success!";
  }
  @override
  Widget build(BuildContext context) {
    final _filteredList =
        listsearch.where((jsonList) => jsonList.startsWith('id')

        ).toList();

    return MaterialApp(
      home: Scaffold(
        body: ListView(children: [
          ListView.builder(
              shrinkWrap: true,
              itemCount: _filteredList.length,
              itemBuilder: (context, i) {
                return ListTile(
                  leading: Icon(Icons.search),
                  title: Text(_filteredList[i].toString()),

                );
              })
        ]),
      ),
    );
  }
}

في الصفحة أعلاه انا اجلب بيانات من الشبكة بتحديد متغير الاسم والايميل

اما في السطر التالي انا أقوم بتصفية متغير الاسم:

  final _filteredList =
        listsearch.where((jsonList) => jsonList.startsWith('id') 

        ).toList();

السؤال الان كيف استطيع تصفية او فلترة الايميل أيضا بجانب الاسم؟

على سبيل المثال خانة الاسم لو قمت بكتابة الاسم احمد سوف احصل على عشر مستخدمين باسم احمد ولكن كل احمد لديه ايميل مختلف اذن اول خطوه قمت بتصفية الاسم احمد ثم قمت بتصفية الايميل أيضا للمستخدم احمد لتقيص المستخدمين الذين يمتلكون الاسم احمد 

 

قمت بمحاولة التالية ولكن الكود لا يعمل بشكل هذا:

    final _filteredList =
        listsearch.where((jsonList) => jsonList.startsWith('id') && jsonList.startsWith('Eliseo')
        ).toList();

كيف يمكن فعل ذلك هل يمكن احد فكره لحل هذا المشكلة؟

شكرا لكم

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

حاول تقربها لنفس هاذ logic 

iIterable<Item> filteredList = list.where((element) {
    return list2
        .map((elem) => elem.personId)
        .toList()
        .contains(element.personId);
  });

اي يكون هناك طبقات في البحث لعمل فيلتر معقد 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...