Deshacer un deslizamiento
Parte de la sección Listas y pantallas del Journey de Flutter de Coddy. Lección 27 de 33.
Es fácil deslizar por accidente, así que las buenas aplicaciones ofrecen una forma de deshacerlo: un SnackBar que indica qué se eliminó, con un botón para deshacer. Un SnackBarAction es ese botón:
SnackBar(
content: Text('$item removed'),
action: SnackBarAction(
label: 'Undo',
onPressed: () {
setState(() {
items.insert(index, item);
});
},
),
)Para volver a colocar el elemento donde estaba, recuerda su posición antes de eliminarlo. items.indexOf(item) es su posición, items.removeAt(index) lo elimina y items.insert(index, item) lo vuelve a colocar en esa misma posición.
items.add(item) también lo volvería a añadir, pero al final de la lista.
Desafío
IntermedioCuando se deslice un elemento para quitarlo, muestra un SnackBar que diga Milk removed (con el nombre del elemento) y una acción Undo que vuelva a poner el elemento en el mismo lugar.
Pruébalo tú mismo
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
debugShowCheckedModeBanner: false,
home: HomeScreen(),
);
}
}
class HomeScreen extends StatefulWidget {
const HomeScreen({super.key});
@override
State<HomeScreen> createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
final List<String> items = ['Milk', 'Bread', 'Eggs', 'Apples', 'Cheese'];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('${items.length} items')),
body: ListView(
children: [
for (String item in items)
Dismissible(
key: ValueKey(item),
onDismissed: (direction) {
setState(() {
items.remove(item);
});
},
child: ListTile(title: Text(item)),
),
],
),
);
}
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Listas y pantallas
1Listas con desplazamiento
Una lista desplazableElementos de listaAl principio y al finalToca un elemento de listaSeparadores entre filas3Tarjetas y cuadrículas
Tarjetas en una listaUna cuadrícula de mosaicosUna cuadrícula creada con un constructor6Pestañas, cajones y deslizamientos
Pestañas con una barra de navegaciónIconos rellenos para la pestaña abiertaUn cajón lateralDeslizar para eliminarDeshacer un deslizamientoPractica por tu cuenta: Compilador de Flutter online