Dostaję moje dane za pomocą Hive do ListView, oto mój kod, w którym pokazuję listView.

import 'package:flutter/material.dart';
import 'package:hive/hive.dart';
import 'package:hive_flutter/hive_flutter.dart';
import 'package:secret_keeper/Database/Hive/PasswordModel.dart';
import 'package:secret_keeper/screens/home_screen/passwords/ShowData.dart';

class PasswordsNavigation extends StatefulWidget {
  @override
  _PasswordsNavigationState createState() => _PasswordsNavigationState();
}

class _PasswordsNavigationState extends State<PasswordsNavigation> {

  var passwordBox = Hive.box<PasswordModel>('passwordBox');

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: Column(
      children: [
        Expanded(
          child: _buildListView(),
        )
      ],
    ));
  }

  Widget _buildListView() {
    return WatchBoxBuilder(
      box: passwordBox,
      builder: (context, box) {
        Map<dynamic, dynamic> raw = box.toMap();
        List list = raw.values.toList();

        return ListView.builder(
          shrinkWrap: true,
          itemCount: list.length,
          itemBuilder: (context, index) {
            PasswordModel passwordModel = list[index];
            return ListTile(
              title: Text(passwordModel.websiteName),
              subtitle: Text(passwordModel.websiteAddress),
              trailing: Row(
                mainAxisSize: MainAxisSize.min,
                children: [
                  IconButton(
                    icon: Icon(Icons.delete),
                    onPressed: (){
                      passwordBox.deleteAt(index);
                    },
                  )
                ],
              ),
            );
          },
        );
      },
    );
  }
}

Stworzyłem nowy plik .dart o nazwie ShowData.dart, gdy kliknął na dowolny przedmiot, jak otworzyć tę czynność? Nie wiem, jak nawigować do nowego ekranu, gdy kliknął na listę Pozycję również chcę, aby dane podobne do listy indeksu n Wszystkie z nawigatorem.

0
Jaydip Pawar 23 listopad 2020, 12:04

1 odpowiedź

Najlepsza odpowiedź

Prawdopodobnie powinieneś utworzyć nowy widget na stronę, tak jak:

class DetailsPage extends StatelessWidget {
  DetailsPage({Key key, required this.id}) : super(key: key);

  final int id;

  Widget build(BuildContext context) {
    // Show details for the item with the given id.
    ...
  }
}

Zauważ, że zajmuje również parametr id w konstruktorze.

Następnie w metodzie ListTile onTap można przejść do nowej strony, przechodząc wzdłuż id:

ListTile(
  onTap: () {
    Navigator.of(context).push(MaterialPageRoute(
      builder: (_) => DetailsPage(id: /* id of the item at the current index */),
    ));
  },
  ...
),
2
Marcel 23 listopad 2020, 12:50