Flutter:在选择时重定向PopupMenuButton页面
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flutter:在选择时重定向PopupMenuButton页面相关的知识,希望对你有一定的参考价值。
我对Flutter非常陌生。我正在学习。也许我的问题听起来很愚蠢。我正在尝试创建一个当前创建的弹出栏。我想根据选择将其重定向到其他页面。我在管理onselected
时遇到了麻烦我在SO上检查了一些问题,但是没有找到关于它如何工作的任何解释,也检查了一些网站,但并不能正确理解。
import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp extends StatefulWidget { @override _MyAppState createState() => _MyAppState(); } class _MyAppState extends State<MyApp> { Choice _selectedChoice = choices[0]; @override Widget build(BuildContext context) { var title = "AppBar demo"; return MaterialApp( title: title, home: Scaffold( appBar: AppBar( title: Text(title), actions: <Widget>[ IconButton( icon: Icon(choices[0].icon), onPressed: () { _select(choices[0]); }, ), IconButton( icon: Icon(choices[1].icon), onPressed: () { _select(choices[1]); }, ), PopupMenuButton<Choice>( onSelected: _select, itemBuilder: (BuildContext context) { return choices.skip(2).map((Choice choice) { return PopupMenuItem<Choice>( value: choice, child: Text(choice.title) ); }).toList(); }, ), ], ), body: ChoiceCard(choice: _selectedChoice), ), ); } void _select(Choice choice) { setState(() { _selectedChoice = choice; }); } } class ChoiceCard extends StatelessWidget { final Choice choice; const ChoiceCard({Key key, this.choice}) : super(key: key); @override Widget build(BuildContext context) { var textStyle = Theme.of(context).textTheme.display1; return Padding( padding: const EdgeInsets.all(0.0), child: Card( child: Center( child: Column( mainAxisSize: MainAxisSize.min, children: <Widget>[ Icon( choice.icon, size: 128.0, ), Text(choice.title, style: textStyle) ], ), ), ), ); } } class Choice { const Choice({this.title, this.icon}); final String title; final IconData icon; } const List<Choice> choices = const <Choice>[ const Choice(title: 'Car', icon: Icons.directions_car), const Choice(title: 'Bicycle', icon: Icons.directions_bike), const Choice(title: 'Boat', icon: Icons.directions_boat), const Choice(title: 'Bus', icon: Icons.directions_bus), const Choice(title: 'Train', icon: Icons.directions_railway), const Choice(title: 'Walk', icon: Icons.directions_walk), ];
请告知我需要在哪里定义其他页面/小部件/课程的详细信息。还有在这种情况下onselect的工作方式。
谢谢
我对Flutter非常陌生。我正在学习。也许我的问题听起来很愚蠢。我正在尝试创建一个当前创建的弹出栏。我想根据...
答案
每次选择PopUpMenuItem
时,onSelected:
无效函数_select
都会使用参数value: choice
进行调用>
[使用setState()
,Statefull
类_MyAppState更新为新值_selectedChoice
另一答案
我尝试使用下面的代码修复它。
以上是关于Flutter:在选择时重定向PopupMenuButton页面的主要内容,如果未能解决你的问题,请参考以下文章