小编Wal*_*hed的帖子

从一个选项卡滑动到另一个选项卡时,TabView 不保留状态

上下文:这里的页面可以TabView在所有这些选项卡使用的选项卡之间导航flutter_bloc(版本 6.0.1)。

问题:当滑动到任何选项卡时,状态不会被保留,整个小部件树正在重建,如下面的 gif 所示

滑动时未保留页面视图状态

这是build()方法:

 @override
  Widget build(BuildContext context) {
    super.build(context);
    return DefaultTabController(
      initialIndex: 0,
      length: 3,
      child: Scaffold(
        backgroundColor: Colors.white,
        appBar: _buildAppBarWithTabs(),
        body: TabBarView(
          children: <Widget>[
            defaultViewforCategory(1), //Women
            defaultViewforCategory(3), //Men
            defaultViewforCategory(2), //Kids
          ],
        ),
      ),
    );
  }
Run Code Online (Sandbox Code Playgroud)

下面是函数的实现 defaultViewforCategory()

Widget defaultViewforCategory(int mainCategoryId) {
    return PageStorage(
      bucket: bucket,
      key: PageStorageKey(mainCategoryId),
      child: ConstrainedBox(
        constraints: BoxConstraints(maxWidth: 1200),
        child: ListView(
          scrollDirection: Axis.vertical,
          children: <Widget>[
            Padding(
              padding: const EdgeInsets.only(bottom: 150),
              child: Container(
                height: 800,
                child: …
Run Code Online (Sandbox Code Playgroud)

state-management flutter flutter-bloc

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

具有可见半径的圆形按钮和子图像

目标:实现具有可见半径和儿童图像的完美尺寸的圆形按钮


截图演示: 左:设计到实施,右:尝试的解决方案

从上图可以看出,我尝试了社区在这里提到的许多解决方案

包括:

  1. 圆形头像
    CircleAvatar(
     child: Image.asset('assets/images/gucci.jpg')
    )
Run Code Online (Sandbox Code Playgroud)
  1. 剪辑R矩形
    ClipRRect(
      borderRadius: BorderRadius.circular(10.0),
      child: Image.asset(
         'assets/images/gucci.jpg',
         height: 100.0,
         width: 100.0,
      )
    )
Run Code Online (Sandbox Code Playgroud)
  1. Ink.image作为子小部件的Material小部件
Material(
   elevation: 1.0,
   shape: CircleBorder(),
   clipBehavior: Clip.hardEdge,
   color: Colors.transparent,
   child: Ink.image(
      image: AssetImage('assets/images/gucci.jpg'),
      fit: BoxFit.cover,
      width: 120.0,
      height: 120.0,
      child: InkWell(
         onTap: () {},
      )
   )
)
Run Code Online (Sandbox Code Playgroud)

关于如何实现这个设计有什么想法吗?

user-interface flutter

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

导航到另一个页面视图或任何视图时,Bloc 小部件引用技术数据(重建)

上下文:我有一个应用程序,它PageView可以使用BottomNavigationBar,在五个屏幕之间导航,一个页面正在使用 Bloc 模式(在未来版本中几乎所有页面都将使用 Bloc)这些 Blocs 正在从后端服务获取数据以填充 UI与获取的数据。

问题:在小部件树的任何级别的页面之间导航时。Bloc 小部件“重置”并从存储库中重新获取数据。

如下图所示:

显示问题的屏幕截图

小部件树如下:

  • main.dart
    • 家.dart
      • timeline.dart(屏幕截图中显示的屏幕)

尝试过的解决方案:我将 加到AutomaticKeepAliveClientMixin页面类和其他页面中,但它没有完成这项工作。

这是上面屏幕截图中显示的页面的构建方法的代码

   @override
  Widget build(BuildContext context) {

    super.build(context);

    return DefaultTabController(
      length: 4,
      child: Scaffold(
        backgroundColor: Colors.white,
        appBar: _builAppBarWithTabs(),
        body: Center(
          child: ConstrainedBox(
            constraints: BoxConstraints(maxWidth: 1200),
            child: ListView(
              scrollDirection: Axis.vertical,
              children: <Widget>[
                Padding(
                  padding: const EdgeInsets.only(bottom: 150),
                  child: Container(
                    height: 800,
                    child: CustomScrollView(
                      scrollDirection: Axis.vertical,
                      slivers: <Widget>[
                        SliverToBoxAdapter(
                          child: MasonryGrid(
                            column: getResponsiveColumnNumber(context, 1, 2, 6),
                            children: <Widget>[ …
Run Code Online (Sandbox Code Playgroud)

widget flutter bloc

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

TabBar 小部件内的动态标签而不是静态标签

上下文:我有当前的设计 - 显示在下面的屏幕截图中 - 我Tab静态实现了s,

标签栏

问题:我们如何Tab使用来自服务器的动态值动态创建s?

例如,服务器发送超过 5Tab秒。

我当前的实现包含一个 AppBar,它支持一个TabBar带有标签的小部件列表

这是标签栏的代码片段:

 bottom: TabBar(
        labelPadding: EdgeInsets.symmetric(horizontal: 20),
        indicatorColor: kDarkColor,
        labelColor: kDarkColor,
        indicatorWeight: 2,
        unselectedLabelColor: Colors.black,
        isScrollable: true,
        tabs: [
          Tab(child: Text('Timeline.mostPopularTab'.tr())),
          Tab(child: Text('Timeline.menTab'.tr())),
          Tab(child: Text('Timeline.womenTab'.tr())),
          Tab(child: Text('Timeline.kidsTab'.tr())),
        ],
      ),
Run Code Online (Sandbox Code Playgroud)

tabbar flutter flutter-layout

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

AndroidManifest 中未解析的类 ParseFirebaseInstanceIdService

上下文: 通过在 Android 上实现云推送通知Parse Server

作为后端和Firebase Cloud消息服务

目标:Parse主题 Android 应用程序发送推送通知

问题: 当将类com.parse.fcm.ParseFirebaseInstanceIdService注入AndroidManifest.xml文件时,它没有解决。

已经尝试过的解决方案: 更改build.gradle(应用程序文件)中的 Firebase 和 Parse 包版本以及更改build.gralde(项目文件)中的依赖项版本

项目文件:

AndroidManifest.xml (发生错误的文件部分)

<service
        android:name="com.parse.fcm.ParseFirebaseInstanceIdService"
        android:exported="true">
        <intent-filter>
            <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
        </intent-filter>
    </service>
Run Code Online (Sandbox Code Playgroud)

build.gradle(项目)

     buildscript {
        repositories {
            google()
            jcenter()

        }
        dependencies {
            classpath 'com.android.tools.build:gradle:3.5.1'
            classpath 'com.google.gms:google-services:4.0.1'

        }
    }

    allprojects {
        repositories {
            google()
            jcenter()
            maven { url "https://jitpack.io" }
        }
    }
    task clean(type: Delete) {
        delete rootProject.buildDir 
} …
Run Code Online (Sandbox Code Playgroud)

android android-manifest parse-platform firebase-cloud-messaging

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