当我有Nested时,我遇到了这个问题Navigator。所以像
class App extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
initialRoute: "/",
routes: {
'/': (context) => SomeOneView(),
'/two': (context) => SomeTwoView(),
'/three': (context) => SomeThreeView(),
},
);
}
}
class SomeOneView extends StatefulWidget {
@override
_SomeOneViewState createState() => _SomeOneViewState();
}
class _SomeOneViewState extends State<SomeOneView> {
@override
Widget build(BuildContext context) {
return Container(
width: double.infinity,
height: double.infinity,
color: Colors.indigo,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
MaterialButton(
color: …Run Code Online (Sandbox Code Playgroud) 我在使用 Flutter Provider 时遇到了问题......我的流程是这样的:登录用户 ID 被传递给新的小部件后 -> 从那里执行保存到数据库,然后重定向到新的小部件(仪表板)。
这是登录后小部件的代码:
return MaterialApp(
title: title,
home: Scaffold(
appBar: AppBar(
title: Text(title),
),
body: ListView(
children: <Widget>[
Container(
margin: EdgeInsets.all(8.0),
child: Card(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(8.0))),
child: InkWell(
onTap: () {
var user = Provider.of<UserRepository>(context);
user.savePreference(user.user.id, "Something");
user.navigateToNewPage(Dashboard(), context);
print(user.user.id);
},
Run Code Online (Sandbox Code Playgroud)
这有效:
user.savePreference(user.user.id, "Something");
Run Code Online (Sandbox Code Playgroud)
但这导致了一个问题:
user.navigateToNewPage(Dashboard(), context);
Run Code Online (Sandbox Code Playgroud)
在仪表板小部件中,我正在创建:
Widget build(BuildContext context) {
var user = Provider.of<UserRepository>(context);
Run Code Online (Sandbox Code Playgroud)
在 UserRepository 我有这个:
class UserRepository with ChangeNotifier {
User user;
Status _status = Status.Uninitialized;
Status get status …Run Code Online (Sandbox Code Playgroud)