微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

字符串列表到 StatefulWidget Flutter 列表

如何解决字符串列表到 StatefulWidget Flutter 列表

我想将此列表字符串转换为列表有状态小部件

List<String> listString = [
"HomePage()","ProfilePage()"
]

List<StatefulWidget> listStatefulWidget = [];

预期结果:

List<StatefulWidget> listStatefulWidget = [
HomePage(),ProfilePage()
];

更新: 我需要这个用于需要 StatefulWidget 列表的导航栏。 tabs 是应该从 API 获取值的 StatefulWidget 列表。我的 API 返回 listString,所以我需要将其转换为 statefulWidget。

这里是我的代码

var tabs<StatefulWidget> = [
    HomePageView() 
    AccountView(),];

return Scaffold(
    key: scaffoldKey,backgroundColor: Theme.of(context).scaffoldBackgroundColor,bottomNavigationBar: CurvednavigationBar(
      key: _bottomNavigationKey,index: 0,height: 65.0,items: [
       //navbar 
      ],color: Colors.white,buttonBackgroundColor: kSecondaryColor,backgroundColor: Colors.transparent,animationCurve: Curves.easeInOutQuint,animationDuration: Duration(milliseconds: 300),onTap: (index) {
        setState(() {
          _page = index;
        });
      },letIndexChange: (index) => true,),body: tabs[_page]);

}

解决方法

您不能将 String 转换为 StatefulWidget

您可以做的是使用带有 NavigatorState 的字符串导航到应用程序的各个部分。

NavigatorState 的全局键

final GlobalKey<NavigatorState> navigatorKey = new GlobalKey<NavigatorState>();

ma​​in.dart

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',debugShowCheckedModeBanner: false,theme: ThemeData(
        primarySwatch: Colors.blue,),navigatorKey: navigatorKey,onGenerateRoute: (routeSettings) {
      switch (routeSettings.name) { //add more routes as needed
        case 'Home':
          return MaterialPageRoute(builder: (context) => Home());
        default:
          return MaterialPageRoute(builder: (context) => Profile());
      }
    },home: MyHomePage(title: 'Flutter Demo Home Page'),);
  }
}

导航到页面

您可以使用此 navigatorKey.currentState!.pushNamed(<Route Name>) 导航到该页面。

示例:navigatorKey.currentState!.pushNamed('Home') 这会将您导航到 Home 页面。

在您的情况下,您可以从 API 获取路由并构建底部导航栏并使用字符串导航到页面。

示例:

navigatorKey.currentState!.pushNamed(listStatefulWidget [index]);

参考:

https://stackoverflow.com/a/53397266/9074190

https://www.filledstacks.com/post/navigate-without-build-context-in-flutter-using-a-navigation-service/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。