Как я могу загрузить список из асинхронной функции в виджет?

#flutter #dart

#flutter #dart

Вопрос:

Я хотел бы подключиться к базе данных и выполнить запрос, который возвращает список. Я хотел бы загрузить этот список в свое приложение Flutter, но я не понимаю, как это сделать. Это мой текущий код:

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

void main(List<String> arguments) async {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Center(
            child: Text(
              'YOURCHAT',
              style: TextStyle(
                letterSpacing: 7,
              ),
            ),
          ),
        ),
        body: FutureBuilder()
      ),
    );
  }
}
  

Я хотел бы загрузить данные в тело в текстовом виджете.

Как я могу это сделать?

Ответ №1:

Правильно используйте Future builder

 //The function which calls data from database

Future functionName() async {
  var result = await http.get('url');
  Chats data = [];
  decodeResult = json.decode(result);
  for (d in decodeResult){
    data = (d["your db column"]: title, d["your db column"]: subtitle)
}
return data;
}
  
 //The class for variables

Class Chats(
    String title,
    String subtitle,
   ({this.title, this.subtitle})
)
  

Обновлен раздел тела

 body: SingleChildScrollView(

    child: Futurebuilder(
         future: functionName,
          builder: (BuildContext context, AsyncSnapshot snashot){
         return  Listview.builder(
           builder: (BuildContext contex, int index){
           if (snapshot.hasData){
     return ListTile(
        title: Text(snapshot.data.title),
        subtitle: Text(snapshot.data.subtitle)
);
}
);
}
)
)