Skip to content

Future

Un Future es un objeto que representa un valor potencial, o error, que estará disponible en algún momento en el futuro. Cuando se crea un Future, se inicia un proceso asíncrono. El proceso puede producir un valor o un error. Cuando el proceso finaliza, el Future se completa con este valor o error.

dart
Future<String> fetchUserOrder() {
  return Future.delayed(Duration(seconds: 2), () => 'Cafe');
}

void main() {
  print('Program started');
  fetchUserOrder().then((value) => print(value));
  print('Program ended');
}
Future<String> fetchUserOrder() {
  return Future.delayed(Duration(seconds: 2), () => 'Cafe');
}

void main() {
  print('Program started');
  fetchUserOrder().then((value) => print(value));
  print('Program ended');
}

FutureBuilder

FutureBuilder es un widget que construye su interfaz de usuario en función de un Future. FutureBuilder es útil cuando se necesita esperar a que se complete un Future para construir la interfaz de usuario.

dart
import 'package:flutter/material.dart';

Future<String> fetchUserOrder() {
  return Future.delayed(Duration(seconds: 2), () => 'Cafe');
}

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('FutureBuilder Example'),
        ),
        body: Center(
          child: FutureBuilder<String>(
            future: fetchUserOrder(),
            builder: (context, snapshot) {
              if (snapshot.connectionState == ConnectionState.waiting) {
                return CircularProgressIndicator();
              } else if (snapshot.hasError) {
                return Text('Error: ${snapshot.error}');
              } else {
                return Text('User order: ${snapshot.data}');
              }
            },
          ),
        ),
      ),
    );
  }
}
import 'package:flutter/material.dart';

Future<String> fetchUserOrder() {
  return Future.delayed(Duration(seconds: 2), () => 'Cafe');
}

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('FutureBuilder Example'),
        ),
        body: Center(
          child: FutureBuilder<String>(
            future: fetchUserOrder(),
            builder: (context, snapshot) {
              if (snapshot.connectionState == ConnectionState.waiting) {
                return CircularProgressIndicator();
              } else if (snapshot.hasError) {
                return Text('Error: ${snapshot.error}');
              } else {
                return Text('User order: ${snapshot.data}');
              }
            },
          ),
        ),
      ),
    );
  }
}