博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Flutter学习第六天:Flutter实现打开第三方应用、一行代码实现夜间模式、字体改变、跟随手指移动,加载网络图片等功能。
阅读量:3963 次
发布时间:2019-05-24

本文共 5686 字,大约阅读时间需要 18 分钟。

Flutter实现常用功能

1.Flutter实现小球跟随手指运动

功能比较简单,我也是刚刚开始学Flutter,主要用来记录一下学习过程,废话不多说,先看效果。

在这里插入图片描述
使用的组件:

Stack:层叠布局,相当于Web中的绝对定位、Android中的Frame布局是相似的。Positioned:开始位置是(0,0),移动之后记录到定点(0,0)的left,top距离,所有坐标为(left,top)。GestureDetector:手势控制。屏幕上的触摸点位置每次改变时,都会触发这个回调。container:容器

总共代码如下:

import 'package:flutter/material.dart';class PositionedGroup extends StatefulWidget {
@override _PositionedGroupState createState() => _PositionedGroupState();}class _PositionedGroupState extends State
{
double moveX=0,moveY=0; @override Widget build(BuildContext context) {
return MaterialApp( theme: ThemeData( primarySwatch: Colors.blue, ), home: Scaffold( appBar: AppBar( title: Text('Position移动小球学习'), ), body: Stack( children:
[ Positioned( left: moveX, top: moveY, child: GestureDetector( onPanUpdate: (e) => _domove(e), child: Container( width: 72, height: 72, decoration: BoxDecoration( color: Colors.red, borderRadius: BorderRadius.circular(36), ), ), ), ), ], )), ); } _domove(DragUpdateDetails e){
setState(() {
moveX+=e.delta.dx; moveY+=e.delta.dy; }); print(e); }}

2.如何打开第三方应用

1.导入依赖:

url_launcher: ^5.0.2

在如图pubspec.xml文件里面导入依赖

在这里插入图片描述

2.data代码

跳转代码如下,url为跳转地址:

_langchUrl() async{
const url='https://blog.csdn.net'; if(await canLaunch((url))){
await launch(url); }else{
throw 'Could not launch $url'; } }

总体代码测试代码如下:

粘贴代码比较乱可以用Ctrl+Alt+L快速格式化,但是有时候会与qq头像锁定的快捷键一样,必须关掉QQ。

import 'package:flutter/material.dart';import 'package:url_launcher/url_launcher.dart';class OpenWeb extends StatefulWidget {
@override _OpenWebState createState() => _OpenWebState();}class _OpenWebState extends State
{
@override Widget build(BuildContext context) {
return MaterialApp( theme: ThemeData( primarySwatch: Colors.blue, ), home: Scaffold( appBar: AppBar( title: Text('如何打开第三方应用'), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children:
[ RaisedButton(onPressed: ()=>_langchUrl(), child: Text('打开浏览器'), ) ], ), ), ), ); } _langchUrl() async{
const url='https://blog.csdn.net'; if(await canLaunch((url))){
await launch(url); }else{
throw 'Could not launch $url'; } }}

效果:

在这里插入图片描述

3.快速实现夜间模式

Brightness.dark修改界面为夜间模式

Brightness.light修改界面为日间模式

ThemeData(   brightness:Brightness.dark,   primarySwatch: Colors.blue, )

总体代码:

import 'package:flutter/cupertino.dart';import 'package:flutter/material.dart';import 'package:url_launcher/url_launcher.dart';class OpenWeb extends StatefulWidget {
@override _OpenWebState createState() => _OpenWebState();}class _OpenWebState extends State
{
Brightness brightness=Brightness.light; @override Widget build(BuildContext context) {
return MaterialApp( theme: ThemeData( brightness:brightness, primarySwatch: Colors.blue, ), home: Scaffold( appBar: AppBar( title: Text('如何实现夜间模式'), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children:
[ RaisedButton(onPressed:(){
setState(() {
if(brightness==Brightness.dark){
brightness=Brightness.light; }else{
brightness=Brightness.dark; } }); }, child: Text('切换模式'), ) ], ), ), ), ); }}

效果:

在这里插入图片描述

4.字体改变

1.免费字体ttf下载网站

2.新建font文件夹,放入字体。

在这里插入图片描述

3.在pubspec.xml里面放入如下代码

其中font/test.ttf为你的字体的地址,可以参考第二步骤的ttf放置位置

fonts:    - family: test      fonts:        - asset: font/test.ttf

在这里插入图片描述

4.fontFamily: 'test’设置字体

其他fontFamily: 'test'中的test为第三步family中的test名字相同

import 'package:flutter/cupertino.dart';import 'package:flutter/material.dart';import 'package:url_launcher/url_launcher.dart';class OpenWeb extends StatefulWidget {
@override _OpenWebState createState() => _OpenWebState();}class _OpenWebState extends State
{
Brightness brightness=Brightness.light; @override Widget build(BuildContext context) {
return MaterialApp( theme: ThemeData( fontFamily: 'test', //此处设置修改改页面所有字体 brightness:brightness, primarySwatch: Colors.blue, ), home: Scaffold( appBar: AppBar( title: Text('如何打开第三方应用'), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children:
[ RaisedButton(onPressed:(){
setState(() {
if(brightness==Brightness.dark){
brightness=Brightness.light; }else{
brightness=Brightness.dark; } }); }, child: Text('切换模式',style: TextStyle(fontFamily: 'test'),), //此处设置只修改单个Text的字体 ) ], ), ), ), ); }}

效果:

在这里插入图片描述

6.加载圆形网络图片

ClipOval( child: SizedBox(      width: 100,      height: 100,      child: Image.network('https://i.ibb.co/CQf368G/fbf18c6a86-Bd6-LF.jpg'),    ),  ),

在这里插入图片描述

你可能感兴趣的文章
python超简单的web服务器
查看>>
代理模式、静态代理、动态代理、aop
查看>>
Struts1.x Spring2.x Hibernate3.x DWR2.x整合工具文档v1.00
查看>>
大型Web2.0站点构建技术初探
查看>>
机器学习算法汇总:人工神经网络、深度学习及其它
查看>>
解决Spring中AOP不能切入Struts的DispatchAction方法的问题
查看>>
出国以后才知道英语应该怎么学
查看>>
计算机专业权威期刊投稿经验总结
查看>>
如何在三个月内学会一门外语?
查看>>
看看你对Linux到底了解多少?
查看>>
网上看到的:ARM入门最好的文章(转)
查看>>
中国最美情诗100句
查看>>
javascript注册window的onload事件问题研究
查看>>
客户端技术分页控件javascript+css,可用于任何服务器端技术
查看>>
学习Swing 的网站[转]
查看>>
Google App engine 的第一个应用 midispot
查看>>
提问的智慧
查看>>
关于dom4j无法解析xmlns问题及生成非UTF-8字符集乱码问题的解决
查看>>
很好的一篇文章 如果让我重做一次研究生 王汎森
查看>>
保护U盘批处理文件
查看>>