zoukankan      html  css  js  c++  java
  • flutter---->flutter orientation

    Get the orientation

    1. Media Query

    import 'package:flutter/material.dart';
    
    void main() => runApp(MyApp());
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: Scaffold(
            appBar: AppBar(title: Text("child"), centerTitle: true),
            body: MainWidget(),
          ),
        );
      }
    }
    
    class MainWidget extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        final Orientation orientation = MediaQuery.of(context).orientation;
        return orientation == Orientation.portrait
            ? Container( 100, height: 100, child: Text("portrait"))
            : Container( 100, height: 100, child: Text("landscape"));
      }
    }
    

    2. Orientation Builder

    import 'package:flutter/material.dart';
    
    void main() => runApp(MyApp());
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: Scaffold(
            appBar: AppBar(title: Text("child"), centerTitle: true),
            body: OrientationBuilder(
              builder: (context, orientation) {
                return orientation == Orientation.portrait
                    ? Container( 100, height: 100, child: Text("portrait"))
                    : Container( 100, height: 100, child: Text("landscape"));
              },
            ),
          ),
        );
      }
    }
    

    3. Layout Builder

    import 'package:flutter/material.dart';
    
    void main() => runApp(MyApp());
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: Scaffold(
            appBar: AppBar(title: Text("child"), centerTitle: true),
            body: LayoutBuilder(
              builder: (context, constraints) {
                final bool isPortrait = constraints.maxHeight > constraints.maxWidth;
                return isPortrait
                    ? Container( 100, height: 100, child: Text("portrait"))
                    : Container( 100, height: 100, child: Text("landscape"));
              },
            ),
          ),
        );
      }
    }
    

    Change Orientation

    First, you have to import the services package.

    import 'package:flutter/services.dart';
    

    Next, you can set orientation by setting the value to setPreferredOrientations method in SystemChrome class. In the Flutter the application entry point is the main method. So you can set orientation before call the runApp method in the main method. But if you need to call a binding before the runApp method, you must call the ensureInitialized method in WidgetsFlutterBinding class

    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      await SystemChrome.setPreferredOrientations([DeviceOrientation.landscapeLeft]);
      runApp(MyApp());
    }
    

    Set landscape orientation only

    SystemChrome.setPreferredOrientations([DeviceOrientation.landscapeLeft,DeviceOrientation.landscapeRight]);
    

    You can set either landscapeLeft or landscapeRight to make it work in one way.

    Set portrait orientation only

    SystemChrome.setPreferredOrientations([DeviceOrientation.portraitDown,DeviceOrientation.portraitUp]);
    

    If you set both portraitUp and portraitDown as orientation when you tilt your phone upside down it will rotate the app. If you don’t like to work in upside-down orientation, you can just set only the portraitUp.

    Change orientation dynamically

    RaisedButton(
      child: Text("Portrait"),
      onPressed: () => SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]),
    );
    

  • 相关阅读:
    PetaPOCO 一对多 多对一 多对多
    PetaPoco使用要点
    MySQL_杭州北仓 12.3-12.7需求活动期间累计下单达到3天及以上的客户_20161212
    Python 2.7_Second_try_爬取阳光电影网_获取电影下载地址并写入文件 20161207
    Python 2.7_First_try_爬取阳光电影网_20161206
    MySQL计算销售员昨日各指标综合得分_20161206
    MySQL_关于用嵌套表计算的可以不用 20161205
    MySQL_财务统计各产品品类各城市上周收入毛利表_20161202
    借助取色工具ColorPix对Pycharm编辑器设定自己喜欢的代码颜色_20161202
    python2.7 爬虫_爬取小说盗墓笔记章节及URL并导入MySQL数据库_20161201
  • 原文地址:https://www.cnblogs.com/huhx/p/13374221.html
Copyright © 2011-2022 走看看