Flutter应用程序和Web自适应UI布局

z2acfund  于 2023-06-24  发布在  Flutter
关注(0)|答案(4)|浏览(228)

我一直致力于Flutter移动的应用程序,已经发布了多个版本的AppStore/PlayStore.代码是为移动的应用程序设计而构建的。
我目前正在寻找支持网站使用相同的代码库。
同时支持移动的应用程序和Web的一个问题是UI布局不同。
例如:我们将有顶部栏的行动,但在网络底部栏导航移动的应用程序。我想我可以像下面这样使用kIsWeb为每个屏幕中的每个Scaffold小部件创建不同的appBar和bottomNavigationBar。

if (kIsWeb){
\\ web code
}
else{
\\ app code
}

构建自适应UI的最佳策略是什么?它适用于使用相同代码库的移动的应用程序和网站?

osh3o9ms

osh3o9ms1#

根据您的使用情况进行修改:)

1.)定义约束

const mobileWidth = 480;
const tabletWidth = 900;
const desktopWidth = 1180;

2.)创建响应式小部件,根据屏幕大小改变布局

class ResponsiveLayout extends StatelessWidget {
  const ResponsiveLayout({
    Key? key,
    this.mobileView,
    this.tabletView,
    this.desktopView,
  }) : super(key: key);
  final Widget? mobileView;
  final Widget? tabletView;
  final Widget? desktopView;

  @override
  Widget build(BuildContext context) {
    return LayoutBuilder(builder: (context, dimens) {
      if (dimens.maxWidth <= tabletWidth) {
        if (dimens.maxWidth <= mobileWidth) {
          return mobileView ?? Text("Mobile view");
        } else {
          return tabletView ?? Text("Tablet view");
        }
      } else {
        return desktopView ?? Text("Desktop view");
      }
    });
  }
}

3.)在您想要的地方使用此响应式小部件

class CourseScreen extends StatelessWidget {
  const CourseScreen({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return const ResponsiveLayout(
      mobileView: CourseMobileScreen(),
      tabletView: CourseTabletScreen(),
      desktopView: CourseDesktopScreen(),
    );
  }
}
siv3szwd

siv3szwd2#

最有可能的UI取决于屏幕大小,而不是它是否在Web上运行。网页可以调整大小,并需要维护UI。大多数情况下,我更喜欢使用LayoutBuilder来响应。你也可以在pub上找到一些不错的套餐。虽然操作系统应用程序/ Web应用程序之间有一些不同的功能/特性依赖,在这种情况下,我使用kIsWeb。Android浏览器可以使用Web应用程序。
您可以查看有关adaptive-responsive design的更多信息。

aij0ehis

aij0ehis3#

你应该试试responsive_framework pkg。我已经在我的单一代码库中使用了它,并根据我的用例创建了不同的屏幕分辨率断点。

  • 为了前任 *
builder: (context, widget) => ResponsiveWrapper.builder(
               BouncingScrollWrapper.builder(context, widget),
               maxWidth:  MediaQuery.of(context).size.width/3,
               minWidth: 450,
               defaultScale: true,
               breakpoints: [
                 ResponsiveBreakpoint.resize(450, name: MOBILE),
                 ResponsiveBreakpoint.autoScale(800, name: TABLET),
                 ResponsiveBreakpoint.autoScale(1000, name: TABLET),
                 ResponsiveBreakpoint.resize(1200, name: DESKTOP),
                 ResponsiveBreakpoint.autoScale(2460, name: "4K"),
               ],
               background: Container(color: Color(0xFFF5F5F5))
 ),

因此,请为您的UI使用断点。
或者
您可以使用MediaQuery在一个单独的文件(例如SizeConfig)中创建自己的屏幕配置
为了前任
对于移动的> max_width x maxheight可以是300 x 480。对于平板电脑和台式机也是如此。然后,您可以使用它来增加GridView(对于crossAxisCount)和ListView items中的列表项

mzillmmw

mzillmmw4#

您确实提供了关于如何创建Android响应式UI的好信息。你几乎把所有的要点都加进去了。但我想补充一些可以帮助用户了解更多的信息:
1.不同语言测试
1.利用Android Jetpack组件
1.收集用户反馈
1.使用Flexbox布局
1.实现可扩展的图标因此,这些是可以帮助您为Android创建更具响应性的UI设计的其他一些要点。但是如果你不知道怎么做,我建议你使用hire android developer in India。我还为此聘请了Alakmalak Technologies,他们以非常实惠的价格为我的应用程序提供了最好的UI UX设计。因此,它可以保存您的时间以及金钱。

相关问题