首页 > 解决方案 > Flutter 在 ListView 中加载 Future 列表?

问题描述

嗨,我如何在 ListView 或 ListViebuilder 中加载此列表?

 Future<List<bool>> getBoolList() async{
  List<bool> prefList = [];
  var sharedPreferences = await SharedPreferences.getInstance();
  Set<String> keys = sharedPreferences.getKeys();

  for(int i=0; i<keys.length ; i++){
    bool value = sharedPreferences.getBool(keys.elementAt(i));
    prefList.add(value);
  }
  
  return prefList;
}

List<bool> list = await getBoolList();

我是如何到达那里 的 Flutter SharedPreferences 如何加载所有保存的?

我最喜欢的.dart

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

// ignore: must_be_immutable
class Favoriten extends StatefulWidget {
  @override
  _FavoritenState createState() => _FavoritenState();
}

class _FavoritenState extends State<Favoriten> {



  @override
  Widget build(BuildContext context) {

    return Scaffold(
      appBar: AppBar(
        title: Text('Favorites'),
      ),
      body: // MyList
    );
  }
}

标签: flutter

解决方案


FutureBuilder<List<bool>>(
  future: getBoolList(),
  builder: (context, future){
  if(!future.hasData)return Container(); // Display empty container if the list is empty
  else {
     List<bool> list = future.data;
     return ListView.builder(
      itemCount: list.length,
      itemBuilder: (context, index){
      return // Your widget Here ; // Put your widget, such as container, decoratedBox, listTiles, button etc
      }
     );
   }
  }
),

例子

    FutureBuilder<List<bool>>(
      future: getBoolList(),
      builder: (context, future){
      if(!future.hasData)return Container(); // Display empty container if the list is empty
      else {
         List<bool> list = future.data;
         return ListView.builder(
          itemCount: list.length,
          itemBuilder: (context, index){
          return Container(
           child: Text(list[index].toString())
           );
          }
         );
       }
      }
    ),

推荐阅读