错误:找不到正确的ScopedModel

时间:2018-10-18 02:50:52

标签: dart flutter

我正在开发一个包含许多页面的应用程序,并且为了管理开始使用ScopedModel的状态,这是我的应用程序简单结构:

enter image description here

我的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( ....

并且它仍然显示相同的错误,将不胜感激。 谢谢,请原谅我的语言不好。

3 个答案:

答案 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格式。