플러터 (구) - 서랍 슬라이딩 메뉴 및 패키지 관리

패키지 관리

더 또는 덜 완전한 응용 프로그램 패키지는 바퀴를 만들 반복하지 않도록하기 때문에, 일부 타사 개발자를 사용하여, 자바와 같은 Xutils는 안드로이드 도입 글라이드와 버터 나이프를 개발. 그 중, 우리 패킷의 관리의 모든 노하우 안드로이드 Gradle을하고, IOS 패킷 Cocoapods로 관리. (메뉴 실현 렌더링 슬라이딩)
슬라이딩 메뉴
플러터에서를, 당신의 자신의 이미지를 도입 할 때와 같은 이전 블로거의 이미지 구성 요소를 설명, pubspec.yaml 패키지 구성 파일에 의해 관리, 우리는 내부를 선언해야합니다.
그림 삽입 설명 여기위와 같이, 우리가 dev_dependencies에 필요한 의존성과 종속성을 추가 할 수 있습니다, 이러한 패키지 업로드 할 공식 또는 타사 개발자입니다. 우리는 팩을 다운로드, 프로젝트의 루트 디렉토리에 "떨림 패키지를 얻을"명령을 입력 버전 번호를 입력 공식 웹 사이트 (https://pub.dartlang.org/)에 타사 패키지 떨림 펍의 수를 검색 할 수 있습니다 그것은 사용, 또는 동기화에 필요한 IDE 종속성에서 할 수있다.

마찬가지로, 우리는 또한 술집 호스팅에 자신의 개발 플러그인을 업로드 할 수 있습니다. 다음 표에 CI pubspec.yaml 프로파일 파라미터 :

매개 변수
이름 그것은 여기에 패키지 이름과 수입 세트에있는 항목의 값과 일치하는 응용 프로그램이나 패키지의 이름을 나타냅니다
기술 응용 프로그램 또는 패킷 설명 정보
버전 응용 프로그램 패키지 또는 현재의 버전 번호
종속 응용 프로그램 또는 패키지에 의존 플러그인 또는 제 3 자 패키지
dev_dependencies 종속 개발 환경 패키지
실룩 거리다 같은 글꼴 및 자산으로하는 일부 구성 항목,

효과를 달성 슬라이딩

어떻게 그렇게 많이 필요한 것을 연습을 배울 수 있기 때문에, 설명을 여기에 모두를 완료하기 위해 개별 구성 요소의 섹션을 사용하기 위해서는 이전 섹션에서 배운 모든 지식을 통합, 여기에 작은 효과를 슬라이딩 메뉴를 구현합니다.

첫째, 안드로이드 앱 슬라이딩 메뉴는 그 특성이 분석, 오른쪽, 왼쪽 슬라이드 메뉴 표시 영역의 우측이 있어야? 상기 슬라이딩 메뉴 배경 그림, 사진 및 사진 단추의 왼쪽.

그래서 여기에 우리가 right_page.dart 페이지입니다 디스플레이의 오른쪽을 달성하기 위해 가장 먼저, 코드는 다음입니다 :

import 'package:flutter/material.dart';

class RightPage extends StatelessWidget {
  final String pageText;//确定右侧的文字

  RightPage(this.pageText);//构造函数传入设置页面的文字

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: AppBar(
        title: new Text(pageText),//该页面标题栏与文字相同
      ),
      body: Center(
        child: new Text(pageText),//该页面标题栏与文字相同
      ),
    );
  }
}

오른쪽은 중요하지 않습니다, 우리는 텍스트 때 들어오는 페이지를 구성하여, 어떤 단어를 결정하기 위해 페이지로 이동할지 여부를 결정합니다. 다음에 다음 코드가 매우 중요하며 대문 left_page.dart 왼쪽 슬라이드 :

import 'package:flutter/material.dart';
import 'package:flutter_app/page/right_page.dart';

class LeftPage extends StatefulWidget{
  @override
  _LeftPageState createState() => new _LeftPageState();
}

class _LeftPageState extends State<LeftPage> {
  //头像与设置按钮图片
  String headImageUrl="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1580303478532&di=1478f90ea84d8431546853ee4b9b02d6&imgtype=0&src=http%3A%2F%2Fb-ssl.duitang.com%2Fuploads%2Fitem%2F201511%2F04%2F20151104140542_tBusS.jpeg";
  String profileImageUrl="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1580303491035&di=1abfac6069e86a510b8deec36e4be614&imgtype=0&src=http%3A%2F%2Fb-ssl.duitang.com%2Fuploads%2Fitem%2F201607%2F26%2F20160726185736_yPmrE.thumb.224_0.jpeg";
  //交换头像与设置图片的方法
  void exchangeImage() {
    String backupString = headImageUrl;
    this.setState((){
      headImageUrl = profileImageUrl;
      profileImageUrl = backupString;
    });
  }
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: AppBar(
        title: new Text("侧滑效果"),
      ),
      drawer: new Drawer(
        child: new ListView(
          children: <Widget>[
            new UserAccountsDrawerHeader(//左侧菜单上面的显示区域
                accountName: new Text("liyuanjinglyj"),//姓名或者昵称
                accountEmail: new Text("[email protected]"),//邮箱地址
                currentAccountPicture: new GestureDetector(//大头像点击事件
                  onTap: ()=>print("点击事件"),
                  child: new CircleAvatar(
                    backgroundImage: new NetworkImage(this.headImageUrl),
                  ),
                ),
              otherAccountsPictures: <Widget>[//设置图像的点击事件
                new GestureDetector(
                  onTap: ()=>this.exchangeImage(),//点击交换图片
                  child: new CircleAvatar(
                    backgroundImage: new NetworkImage(this.profileImageUrl),
                  ),
                )
              ],
              decoration: new BoxDecoration(//左侧菜单上面的显示区域背景,设置图片以及填充方式
                image: new DecorationImage(image: new NetworkImage("https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=3138597732,1722388446&fm=26&gp=0.jpg"),fit: BoxFit.fill)
              ),
            ),
            new ListTile(//一个固定高度的行,通常包含一些文本,以及一个行前或行尾图标。
              title: new Text("第一个菜单"),
              trailing: new Icon(Icons.accessibility),
              onTap: (){
                Navigator.of(context).pop();//出栈
                Navigator.of(context).push(//进栈
                    new MaterialPageRoute(
                        builder: (BuildContext context)=>new RightPage("第一个菜单"),
                    ));
              },
            ),
            new ListTile(
              title: new Text("第二个菜单"),
              trailing: new Icon(Icons.search),
              onTap: (){
                Navigator.of(context).pop();//出栈
                Navigator.of(context).push(//进栈
                    new MaterialPageRoute(
                        builder: (BuildContext context)=>new RightPage("第二个菜单页面")
                    ));
              },
            ),
            new Divider(),//分割线
            new ListTile(
              title: new Text("第三个菜单"),
              trailing: new Icon(Icons.playlist_add_check),
              onTap: ()=>Navigator.of(context).pop(),
            )
          ],
        ),
      ),
      body: new Center(
        child: new Text("主页面",style: new TextStyle(fontSize: 35.0),),
      ),
    );
  }
}

메모리 페이지 경로의 스택의 방법으로, 여기 떨림을 충분히 세부 사항, 또는 메모를 주석으로 처리합니다. 따라서, 기존의 작업 푸시 (밀어)과 팝 (POP)은 마지막으로 우리 main.dart 코드, 필수, 다른 코드가 잘 이해 될 각 모양에 메모를 가지고 있습니다 :

import 'package:flutter/material.dart';
import 'package:flutter_app/page/left_page.dart';

void main(){
  runApp(
    new MaterialApp(
      home: LeftPage(),
    ),
  );
}

로그인 인터페이스는 회전 목마의 효과를 얻을 : 같은 슬라이딩 효과 떨림 프로젝트는 효과는 연습 응용 프로그램 구성 요소를 설명하는 블로그 게시물에서 여전히 첫 번째지도 보웬 정확히 동일하게 달성, 완료됩니다.

게시 98 개 원래 기사 · 원 찬양 133 · 전망 850 000 +

추천

출처blog.csdn.net/liyuanjinglyj/article/details/104108539