0

也许我的问题很简单,但我从一个多星期开始寻找它......

我有一个 Json 文件,在一个函数文件中我从这个 Json 中得到一个列表。所以在这一步中,我得到了一个未来

但现在我想用 MaterialPageRoute 将此列表转移到一个新的根目录,但我不明白我该怎么做。

  Navigator.push(
    context,
    MaterialPageRoute(builder: (context) => JourAffiche (
      jouree : givefuturelist(context, detail_jour[1])
    )
    ),
  );

liste_du_jour(jour) async {
  List listt = await afficher_menu(jour);
  return listt;
}

 givefuturelist(context, jour) {
   return FutureBuilder<List>(
      future: liste_du_jour(jour),
      builder: (context, AsyncSnapshot snapshot) {
        if (snapshot.hasData) {
          return snapshot.data;
        } else {
          return null;
        }
      }
  );
}

我希望它是在 UI 中获取列表

class JourAffiche extends StatefulWidget {
  JourAffiche({@required this.jouree});
   Future<List> jouree;

  @override
  _JourAfficheState createState() => _JourAfficheState();
}

class _JourAfficheState extends State<JourAffiche> {
  String _value = null;
  List<String> _values = [];

@override
  void initState() {
    _values = widget.jouree;
    _value = _values.elementAt(0);
  }

但它不起作用......有人可以帮助我吗?提前致谢。

4

2 回答 2

0

1

final List data = await getData();

Navigator.push(
  context,
  new MaterialPageRoute<void>(
    builder: (_) => JourAffiche(jouree: data),
  ),
);

class JourAffiche extends StatefulWidget {
  const JourAffiche({Key key, this.jouree}) : super(key: key);
  final List jouree;

  @override
  _JourAfficheState createState() => _JourAfficheState();
}

....

2

Navigator.push(
  context,
  new MaterialPageRoute<void>(
    builder: (_) => JourAffiche2(jouree: getData()),
  ),
);

class JourAffiche2 extends StatefulWidget {
  const JourAffiche({Key key, this.jouree}) : super(key: key);
  final Future<List> jouree;

  @override
  _JourAfficheState createState() => _JourAfficheState();
}

....
于 2021-02-18T09:34:22.700 回答
0

首先获取数据,然后使用 导航到路由JourAffiche。这就是导航功能的样子。从一些动作处理程序调用它,例如按钮点击。

  Future<void> goToJourAffiche(dynamic jour) async {
    final jouree = await liste_du_jour(jour);

    Navigator.push(
      context,
      MaterialPageRoute(
        builder: (context) => JourAffiche(jouree: jouree),
      ),
    );
  }

您还可以在等待未来完成时显示加载程序:

class SomeWidget extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => SomeWidgetState();
}

class SomeWidgetState extends State<SomeWidget> {
  var isLoading = false;

  @override
  Widget build(BuildContext context) {
    // Build function with uses [isLoading] flag to show or not to show some loader widget
    return ...;
  }

  Future<void> goToJourAffiche(dynamic jour) async {
    setState(() {
      isLoading = true;
    });
    final jouree = await liste_du_jour(jour);
    setState(() {
      isLoading = false;
    });

    Navigator.push(
      context,
      MaterialPageRoute(
        builder: (context) => JourAffiche(jouree: jouree),
      ),
    );
  }
  ...
}
于 2021-02-18T09:40:41.960 回答