小编Seb*_*ian的帖子

Flutter Bloc Pattern - 如何在流事件后导航到另一个屏幕?

我的问题是关于与集团模式一起使用的导航.

在我的LoginScreen小部件中,我有一个按钮,可以将事件添加到集团的EventSink中.bloc调用API并验证用户身份.问题是在LoginScreen Widget中我必须监听流,以及在返回成功状态后如何导航到另一个屏幕.

希望我清楚自己.谢谢!

dart dart-async reactive-streams flutter

14
推荐指数
4
解决办法
7325
查看次数

Flutter - 如何使用泛型将嵌套的json解析为类?

我想知道如何将嵌套的json解析为具有泛型类型的类.我的目的是将来自后端的响应(如包含令牌的loginRespose)与代码和消息包装起来

我有

class BaseResponse<T>{
  int code;
  String message;
  T responseObject;

  BaseResponse.fromJson(Map<String, dynamic> parsedJson)
    : code = parsedJson['Code'],
      message = parsedJson['Message'],
      responseObject = T.fromJson(parsedJson['ResponseObject']); //This is what I'd like to do
}
Run Code Online (Sandbox Code Playgroud)

显然,最后一行会抛出错误,因为T没有命名构造函数"fromJson".我尝试为Type添加一些限制,但我找不到任何解决方案.你知道如何解决这个问题吗?

generics parsing json dart flutter

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

InheritedWidget - 在navigator.push之后,在null上调用getter

导航到新窗口小部件后,我在尝试访问InheritedWidget时遇到问题.

我有这样的顶级小部件

class App extends StatelessWidget{
  build(context){
    return MaterialApp(
        title: 'Iniciar Sesion',
        home: LoginBlocProvider(child: WelcomeScreen()),
    );
  }  
}
Run Code Online (Sandbox Code Playgroud)

然后WelcomeScreen有一个导航到LoginScreen的按钮

class WelcomeScreen extends StatelessWidget {

  @override Widget build(BuildContext context){
    return Scaffold(
      body: Center(child: MyButton)
    );
  }
}

class MyButton extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return RaisedButton(
      shape: StadiumBorder(),
      child: Text('Ingresar', style: TextStyle(color: Colors.black)),
      elevation: 5.0,
      onPressed: () { 
        Navigator.of(context).push(MaterialPageRoute(
           builder: (BuildContext context) =>LoginScreen()
        ));
      }
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

最后在LoginScreen中我想访问InheritedWidget

class LoginScreen extends StatefulWidget {
  @override
  _LoginScreenState createState() => …
Run Code Online (Sandbox Code Playgroud)

dart flutter inherited-widget

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

Pinned SliverPersistentHeader 与 Android StatusBar 重叠

我正在与 Slivers 合作。我有一个 SliverAppBar,然后是 SliverPersistentHeader,最后是 SliverList。

我想要实现的行为是 SliverAppBar 滚动离开屏幕但 SliverPersistentHeader 保持固定在屏幕顶部。

我能够做到这一点,但 SliverPersistentHeader 与 android 状态栏重叠。关于如何解决这个问题的任何想法?

在此处输入图片说明 在此处输入图片说明

最后这是代码

class ExampleApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return CustomScrollView(
      slivers: <Widget>[
        SliverAppBar(
          title: Text('SliverAppBar'),
          pinned: false,
          floating: true,
          snap: true,
          elevation: 0.0,
        ),
        SliverPersistentHeader(
          pinned: true,
          delegate: _SliverAppBarDelegate(
            child: PreferredSize(
            preferredSize: Size.fromHeight(40.0), 
            child: Container(
              color: Theme.of(context).primaryColor,
              child: Padding(
                padding: const EdgeInsets.symmetric(vertical: 12.0, horizontal: 8.0),
                child: Row(
                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
                  children: <Widget>[
                    Text('SliverPersistentHeader', style: TextStyle(color: Colors.white, fontSize: 20.0))
                  ],
                ),
              ),
            ), …
Run Code Online (Sandbox Code Playgroud)

flutter flutter-sliver

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