Asynchronous 如何在行内正确显示未来?

Asynchronous 如何在行内正确显示未来?,asynchronous,flutter,dart,widget,future,Asynchronous,Flutter,Dart,Widget,Future,我试图显示底部AppBar图标的列表,但在此之前,我已经为成员身份做了一些条件检查 以下是完整的代码: 我遇到的问题的一个片段(在构建小部件内部): 您希望使用一个工具来实现这一点。 在代码中执行以下更改: 更改getMemberShip函数: Future<int> getMembership() async { // Your code } List<IconButton> buildChildren(int level) { var builder = [

我试图显示底部AppBar图标的列表,但在此之前,我已经为成员身份做了一些条件检查

以下是完整的代码:

我遇到的问题的一个片段(在构建小部件内部):

您希望使用一个工具来实现这一点。 在代码中执行以下更改:

更改getMemberShip函数:

Future<int> getMembership() async {
    // Your code
}
List<IconButton> buildChildren(int level) {
var builder = [
   // Your code
];

if (level != 1) {
   // Your code
}
return builder;
_spacing(int level) {
   if (level != 1) {
     return MainAxisAlignment.spaceEvenly;
   } else {
     return MainAxisAlignment.spaceBetween;
   }
}
实现您的构建方法,如:

@override
Widget build(BuildContext context) {
   return Scaffold(
     body: tabs[_currentIndex],
     bottomNavigationBar: BottomAppBar(
       shape: CircularNotchedRectangle(),
       color: Colors.red,
       child: Container(
         padding: EdgeInsets.only(left: 10.0, right: 10.0),
         height: 70,
         color: Colors.white,
         child: FutureBuilder(
           builder: (context, snapshot) {
             if (snapshot.hasData) {
               int level = snapshot.data;
               return Row(
                   mainAxisAlignment: _spacing(level),
                   children: buildChildren(level));
             } else if (snapshot.error) {
               return Text('Error occured');
             } else {
               return CircularProgressIndicator();
             }
           },
           future: getMembership(),
         ),
       ),
     ),
   );
}

谢谢,成功了。我以前想过使用futurebuilder,但我不知道如何设计它。
@override
Widget build(BuildContext context) {
   return Scaffold(
     body: tabs[_currentIndex],
     bottomNavigationBar: BottomAppBar(
       shape: CircularNotchedRectangle(),
       color: Colors.red,
       child: Container(
         padding: EdgeInsets.only(left: 10.0, right: 10.0),
         height: 70,
         color: Colors.white,
         child: FutureBuilder(
           builder: (context, snapshot) {
             if (snapshot.hasData) {
               int level = snapshot.data;
               return Row(
                   mainAxisAlignment: _spacing(level),
                   children: buildChildren(level));
             } else if (snapshot.error) {
               return Text('Error occured');
             } else {
               return CircularProgressIndicator();
             }
           },
           future: getMembership(),
         ),
       ),
     ),
   );
}