小编Dan*_*ral的帖子

Xamarin.Forms - 如何动态更改 CarouselView 的高度?

我有一个 CarouselView,我在其中调用具有单独且完全不同的视图的对象。

我的 ContentPage 拥有的唯一元素是 CarouselView 本身,以及上面带有渐变的底部栏(注意下图中的渐变)。

我已经这样做了,当页面的滚动空间变为 0 时(当我滚动到页面末尾时),渐变消失。

问题是,当我在 CarouselView 中的项目之间滑动时,CarouselView 始终保持调用的第一个 View 的高度。

这意味着,在比第一个高度更多的视图中,当向上滚动时(在最底部之后,因此不显示渐变)渐变只会在达到第一页的高度值时再次显示。

在高度小于第一个的视图中,页面将允许我向下滚动,直到达到第一页的高度值,即使页面上没有足够的元素甚至需要滚动。

本质上,我要问的是,是否有一种方法可以在每次滚动完成到 CarouselView 中的另一个视图时以某种方式“刷新”页面的高度,以更小的方式解决我的高度问题视图,以及我在较大视图中的梯度问题。

主要内容页面代码隐藏(渐变)

        public double ScrollingSpace
        {
            get
            {
                return MainScrollView.ContentSize.Height - MainScrollView.Height;
            }
            set { }
        }

        // Removes gradient when scroll is complete
        private void OnScrolled(object sender, ScrolledEventArgs e)
        {
            if (ScrollingSpace <= e.ScrollY) // Touched bottom
                EndPageGradient.SetValue(IsVisibleProperty, false); // the view is GONE, not invisible
            else
                EndPageGradient.SetValue(IsVisibleProperty, true);
        }

        // Removes gradient if page is not large enough …
Run Code Online (Sandbox Code Playgroud)

xamarin xamarin.forms

7
推荐指数
0
解决办法
162
查看次数

Flutter - 如何将 Bloc 作为可重用 Widget 中的参数传递?

我正在构建一个登录页面,并且已经创建了打算用作完全动态 TextField 小部件的内容。

我现在需要创建该小部件的 2 个实例(电子邮件和密码输入)并发送hintText、errorText 的参数,然后发送我的LoginBloc 和验证方法,这些参数对于每个输入当然是不同的。

我的问题是 Dart 不允许我使用小部件接收的块作为类型,因此代码不起作用。

我可以做什么来解决这个问题?或者我完全做错了,有更好的方法吗?

登录页面:

@override
  Widget build(BuildContext context) {
    return SafeArea(
      child: Scaffold(
        body: Padding(
          padding: const EdgeInsets.only(
            left: 16,
            right: 16,
          ),
          child: SingleChildScrollView(
            child: Column(
              children: <Widget>[
                Container(
                  margin: EdgeInsets.only(top: 50),
                  child: Text(
                    AppLocalizations.of(context).initiateSession,
                    style: Theme.of(context).textTheme.headline6,
                  ),
                ),
                BlocProvider(
                  create: (context) {
                    return LoginBloc();
                  },
                  child: BlocListener<LoginBloc, LoginState>(
                    listener: (context, state) {
                      if (state.status.isSubmissionFailure) {
                        ScaffoldMessenger.of(context)
                          ..hideCurrentSnackBar()
                          ..showSnackBar(
                            const SnackBar(
                                content: Text('Authentication Failure')),
                          );
                      }
                    },
                    child: Align(
                      alignment: …
Run Code Online (Sandbox Code Playgroud)

flutter bloc flutter-bloc

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

标签 统计

bloc ×1

flutter ×1

flutter-bloc ×1

xamarin ×1

xamarin.forms ×1