小编wal*_*ker的帖子

如何使用tabBar实现sliverAppBar

扑文档显示演示SliverAppBar+ TabBar+ TabBarView with ListView的使用NestedScrollView,这是一个有点复杂,所以我不知道是否有一个简单而明确的方式来实现它。我尝试了这个:

CustomScrollView
  slivers:
    SliverAPPBar
      bottom: TabBar
    TabBarView
      children: MyWidget(list or plain widget)
Run Code Online (Sandbox Code Playgroud)

出现错误:

扑:下列说法被扔建筑滚动(axisDirection:对,物理:
扑:一个RenderViewport预计类型RenderSliv​​er的孩子,但收到类型_RenderExcludableScrollSemantics的孩子。
扑:RenderObjects期望特定类型的孩子,因为他们与布局过程中他们的孩子协调例如,RenderSliv​​er不能是RenderBox的子级,因为RenderSliv​​er不了解RenderBox布局协议。

flutter:引发了另一个异常:'package:flutter / src / widgets / framework.dart':失败的断言:3497行pos 14:'owner._debugCurrentBuildTarget == this':不正确。

这是我的代码:

import 'package:flutter/material.dart';

main(List<String> args) {
  runApp(MyScrollTabListApp());
}

class MyScrollTabListApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(title: "aa", home: MyScrollTabListHomePage());
  }
}

class MyScrollTabListHomePage extends StatefulWidget {
  @override
  MyScrollTabListHomePageState createState() {
    return new MyScrollTabListHomePageState();
  }
}

class MyScrollTabListHomePageState …
Run Code Online (Sandbox Code Playgroud)

nestedscrollview flutter flutter-sliver

8
推荐指数
2
解决办法
6515
查看次数

什么是 built_value 对象的 setter

我正在尝试在flutter中使用built_value,发现如果我声明了一个Type use built_value,我通常可以使用点语法为其属性赋值:我的声明是:

abstract class Post implements Built<Post, PostBuilder> {
    Post._();
    int get userId;
    int get id;
    String get title;
    String get body;
    factory Post([updates(PostBuilder b)]) = _$Post;
    static Serializer<Post> get serializer => _$postSerializer;
}
Run Code Online (Sandbox Code Playgroud)

并像这样使用它:

Post p = Post();
p.titie = "hello world";
Run Code Online (Sandbox Code Playgroud)

得到错误:

[dart] 在“Post”类中​​没有名为“title”的 setter。

我不熟悉这个builder东西,即使我发现它PostBuilder具有所有属性的设置器: PostBuilder().title = 'hello world'; 但我该如何使用它?

code-generation flutter json-serialization

6
推荐指数
1
解决办法
2411
查看次数

built_value 反序列化遇到错误“类型 '_InternalLinkedHashMap&lt;String,dynamic&gt;' 不是类型转换中类型 'Iterable&lt;dynamic&gt;' 的子类型”

我的模型:

abstract class Post implements Built<Post, PostBuilder> {
    static Serializer<Post> get serializer => _$postSerializer;
    int get userId;
    int get id;
    String get title;
    String get body;
    factory Post([updates(PostBuilder b)]) = _$Post;
    Post._();
}
Run Code Online (Sandbox Code Playgroud)

我的要求:

Future<Post> getPostById(int id) async {
    final resp = await http.get('https://jsonplaceholder.typicode.com/posts/${id}');  
    if(resp.statusCode == 200) {
        return serializers.deserializeWith(Post.serializer, json.decode(resp.body));
    }else {
        throw Exception('Failed to load post');
    }
}
Run Code Online (Sandbox Code Playgroud)

以及源代码中的断点:

 if (serializer is StructuredSerializer) {
    try {
      // ===> HERE
      return serializer.deserialize(this, object as Iterable,
          specifiedType: specifiedType);
    } on …
Run Code Online (Sandbox Code Playgroud)

dart json-deserialization flutter

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