上下文:这里的页面可以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) 目标:实现具有可见半径和儿童图像的完美尺寸的圆形按钮
从上图可以看出,我尝试了社区在这里提到的许多解决方案
包括:
CircleAvatar(
child: Image.asset('assets/images/gucci.jpg')
)
Run Code Online (Sandbox Code Playgroud)
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)
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)
关于如何实现这个设计有什么想法吗?
上下文:我有一个应用程序,它PageView
可以使用BottomNavigationBar
,在五个屏幕之间导航,一个页面正在使用 Bloc 模式(在未来版本中几乎所有页面都将使用 Bloc)这些 Blocs 正在从后端服务获取数据以填充 UI与获取的数据。
问题:在小部件树的任何级别的页面之间导航时。Bloc 小部件“重置”并从存储库中重新获取数据。
如下图所示:
小部件树如下:
尝试过的解决方案:我将 加到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) 上下文:我有当前的设计 - 显示在下面的屏幕截图中 - 我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) 上下文:
通过在 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