我正在开发一个包含许多页面的应用程序,并且为了管理开始使用ScopedModel
的状态,这是我的应用程序简单结构:
我的MainModel()
是:
class MainModel extends Model with LoginModel, PostsFeedModel, SocialLoginModel, ProfileModel{}
并将其添加到主要材料应用中,如下所示:
return ScopedModel<MainModel>(
model: MainModel(),
child: new MaterialApp(
我不能简单地在任何子视图中使用ScopedModelDescendant
:
child: ScopedModelDescendant<MainModel>( ...
我收到此错误
错误:找不到正确的ScopedModel
我必须添加ScopedModel<MainModel>(...
才能使其正常工作!
我播出了这个答案here,但我很确定这是可能的,因为我正在学习一门课程,该课程的讲师使用的结构非常相似(推送新视图),并且对他有用。
作为使用多重范围模型的另一种尝试,我遵循了范围模型所有者的建议here,如下所示:
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:Sheer/util/SheerDialog.dart';
import 'package:scoped_model/scoped_model.dart';
import '../../models/profile-model.dart';
class Profile extends StatefulWidget {
final uid;
Profile({@required this.uid});
@override
_ProfileState createState() => _ProfileState();
}
class _ProfileState extends State<Profile> {
@override
Widget build(BuildContext context) {
final profileModel = ScopedModel.of<ProfileModel>(context);
return profileModel.user.photoURL != ''
? Scaffold( ....
并且它仍然显示相同的错误,将不胜感激。 谢谢,请原谅我的语言不好。
答案 0 :(得分:2)
问题出在我导入main_model.dart的方式上;
在main.dart中,我这样导入它:models/main_model.dart
在内部页面中,我像这样导入它:package:MYAPP/models/main_model.dart
当我统一调用文件的方式时,它可以按预期工作
答案 1 :(得分:1)
您如何管理路由?我记得当我错误地定义路由/导航时,我也遇到同样的问题。
顺便说一句,您可以签出我的源代码作为参考。我还在我的应用https://github.com/tuannguyendotme/flutter_todo
中使用了范围模型HTH
答案 2 :(得分:1)
我的信誉不足,无法对您的回答发表评论,所以我需要在这里输入。
您是否正在使用VS Code?如果是这样,最好坚持使用VS Code代码完整建议,而不是自己输入以保持import语句一致。它使用package:MYAPP / models / main_model.dart格式。