Как отобразить выбранные данные на другой странице в flutter

#flutter

#трепетать

Вопрос:

Привет, я новичок в flutter, я использовал образец базы данных для получения данных о 10 пользователях. эти данные отображаются в плитке списка с флажком «Ведущий элемент» (для выбора / отмены выбора). Теперь мне нужна помощь в отображении выбранных данных на другой странице, как только я нажму кнопку корзины на панели приложений..

вот мой главный

 import 'dart:convert';  import 'package:flutter/material.dart'; import 'package:flutter_application_http_get/example.dart'; import 'package:flutter_application_http_get/screen.dart'; import 'package:flutter_application_http_get/selected.dart'; import 'package:flutter_application_http_get/sunday_state.dart'; import 'package:http/http.dart' as http;  void main() {  runApp(MyApp()); }  class MyApp extends StatelessWidget {  // This widget is the root of your application.  @override  Widget build(BuildContext context) {  return MaterialApp(  title: 'Flutter Demo',  theme: ThemeData(  primarySwatch: Colors.blue,  ),  home: Sunday(),  );  } }  class Sunday extends StatefulWidget {  const Sunday({Key? key}) : super(key: key);   @override  _SundayState createState() =gt; _SundayState(); }   

API, Вызванный Здесь

 class _SundayState extends Statelt;Sundaygt; {  var users = [];  Future getUserData() async {  var res =  await http.get(Uri.https("jsonplaceholder.typicode.com", "users"));  var jsonData = jsonDecode(res.body) as List;   setState(() {  users = jsonData;  });  }   @override  void initState() {  super.initState();  getUserData();  }   final notification = [SundayCheckBoxState()];   late final post;   

данные с поста, если они проверены, напечатаны..

 getCheckboxItems() {  users.forEach((post) {  if (post['checked'] == true) {    print(post);    }  });  }  

здесь при нажатии мне нужно отобразить проверенные данные на другой странице

   @override  Widget build(BuildContext context) {  return Scaffold(  appBar: AppBar(  title: Text("User Data"),  actions: [  IconButton(  onPressed: getCheckboxItems,    icon: Icon(Icons.shopping_cart))  ],  ),  body: Container(  child: Card(  margin: EdgeInsets.all(20.0),  child: ListView.builder(  itemCount: users.length,  itemBuilder: (context, i) {  final post = users[i];   return Card(  elevation: 5,  child: Padding(  padding: const EdgeInsets.all(12.0),  child: ListView(shrinkWrap: true, children: [     ListTile(  leading: Checkbox(  value: post['checked'] ?? false,  onChanged: (value) {  setState(() {  post['checked'] = value;  });  }),  title: Text("${post['id']}"   "${post['name']}"),    ),  ])     ));  }),  ),  ),  );  }   

Комментарии:

1. создайте конструктор на другой странице и через маршрут страницы отправьте свои данные на другую страницу

Ответ №1:

Вы можете попробовать эту логику, она сработала для меня :

 var _isSelectedCheckBoxArr = [];  var _addSelectedValueArr = [];   Checkbox(  value: _isSelectedCheckBoxArr[i],  materialTapTargetSize:  MaterialTapTargetSize  .shrinkWrap,  onChanged: (s) {  setState(() {  _isSelectedCheckBoxArr[i] =  !_isSelectedCheckBoxArr[i];  });  print(  "$_tag onChanged: (s): $s");  if (s) {  setState(() {  _addSelectedValueArr.add(  "${users[i]}");  });  } else if (!s) {  setState(() {  _addSelectedValueArr  .remove(  users[i]);  });  }  }),  

Затем по нажатию кнопки «Корзина» передайте массив _addSelectedValueArr в конструкторе экрана, который вы хотите отобразить.