小编are*_*ser的帖子

颤动:如果视图已被处理,如何防止横幅广告显示

我目前正在尝试使用firebase_admob插件中的横幅广告.显示和处理它们的过程非常简单,我在initState()和dispose()中进行.

创建和显示添加的代码如下所示:

_bannerAd = createBannerAd();
_bannerAd
  ..load().then((loaded) {
    if (loaded) {
      _bannerAd..show();
    }
  });
Run Code Online (Sandbox Code Playgroud)

但是,由于我正在异步调用show(),因此在显示广告时(即通过快速单击后退按钮)视图可能已经关闭.在这种情况下,将永远不会调用dispose()方法,并且广告将"卡在"屏幕底部.

我怎么解决这个问题?我是否使用横幅广告错误,或者是否可以检测视图是否已更改?我尝试使用州的"已安装"属性,但它似乎不起作用.

admob dart flutter

8
推荐指数
1
解决办法
942
查看次数

在Express GraphQL中解析嵌套数据

我目前正在尝试解析一个简单的配方列表,其中包含对食材的引用。

数据布局如下所示:

type Ingredient {
  name: String!
  amount: Int!
  unit: Unit!
  recipe: Recipe
}

type Recipe {
  id: Int!
  name: String!
  ingredients: [Ingredient]!
  steps: [String]!
  pictureUrl: String!
}
Run Code Online (Sandbox Code Playgroud)

据我了解,我的解析器应如下所示:第一个解析食谱,第二个解析食谱中的成分字段。根据我的理解,它可以使用配方提供的参数。在我的配方对象中,该成分由id(int)引用,因此这应该是参数(至少我是这样认为的)。

var root = {
  recipe: (argument) => {
       return recipeList;
  },
  Recipe: {
    ingredients: (obj, args, context) => {
        //resolve ingredients
    }
  },
Run Code Online (Sandbox Code Playgroud)

这些解析器通过以下方式传递到应用程序:

app.use('/graphql', graphqlHTTP({
  schema: schema,
  graphiql: true,
  rootValue: root,
}));
Run Code Online (Sandbox Code Playgroud)

但是,我的解析器似乎没有被调用。我希望在查询中即时查询所有成分。

该端点有效,但是一旦我查询成分,"message": "Cannot return null for non-nullable field Ingredient.name.",就会返回此消息的错误。

当尝试在解析器中记录传入的参数时,我可以看到它从未执行过。不幸的是,我找不到像我一样使用express-graphql时如何使用它的示例。

如何在express-graphQL中为嵌套类型编写单独的解析器?

node.js express graphql graphql-js express-graphql

4
推荐指数
1
解决办法
877
查看次数

Flutter ListView不更新

我想在Flutter中创建一个ListView,在新数据到达时更新.我正在使用RefreshIndicator来触发列表加载以进行测试.对于我的列表,我使用ListBuilder将我的对象映射到视图对象.

据我所知,setState()应该触发对我的列表的更新,但事实并非如此.

调试显示,在调用setState()回调之后,我的_listContent实际上填充了72个项目.为什么我的列表不会自动更新?我错过了什么吗?

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => new _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    List<Manga> _listContent = new List<Manga>();

    void _addMangas(List<Manga> mangas) {
      setState(() {
        _listContent.addAll(mangas);
        print('Cleared list');
        });
    }

    Future<Null> _onRefresh() {
      Completer<Null> completer = new Completer<Null>();

      loadMangaItems().then((mangas) => _addMangas(mangas));
      completer.complete();

      return completer.future;
    }

    return new Scaffold(
      appBar: new AppBar(

        title: new Text(widget.title),
      ),
      body: new RefreshIndicator(
          child: new …
Run Code Online (Sandbox Code Playgroud)

listview dart flutter

2
推荐指数
1
解决办法
7814
查看次数