如何解决字符串列表到 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>();
main.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]);
参考:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。