最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

packages思維及使用Java添加Android平臺(tái)特定實(shí)現(xiàn)

 更新時(shí)間:2022年12月23日 09:12:32   作者:黎燃  
這篇文章主要為大家介紹了packages思維及使用Java添加Android平臺(tái)特定實(shí)現(xiàn)在Flutter框架里的體現(xiàn)和運(yùn)用詳解,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

packages思維

即使軟件包未在Pub。對(duì)于未用于公共發(fā)布的特殊插件或尚未準(zhǔn)備好發(fā)布的軟件包,可以使用其他依賴選項(xiàng):

dependencies:
  flutter:
    sdk: flutter

路徑依賴性:Flutter應(yīng)用程序可以通過文件系統(tǒng)依賴插件的路徑依賴性。路徑可以是相對(duì)路徑,也可以是絕對(duì)路徑。

例如,要依賴位于應(yīng)用程序相鄰目錄中的插件“plugin1”,請(qǐng)使用以下語法依賴項(xiàng):plugin1:path:/plugin1/ Git依賴性:還可以依賴存儲(chǔ)在Git存儲(chǔ)庫中的包。

如果軟件包位于倉庫的根目錄中,請(qǐng)使用以下語法:

dependencies:plugin1:git:url:git://github.com/flutter/plugin1.git

import 'package:flutter/material.dart';
import 'package:css_colors/css_colors.dart';
void main() {
  runApp(new MyApp());
}
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: new DemoPage(),
    );
  }
}
class DemoPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      body: new Container(color: CSSColors.orange)
    );
  }
}

Git依賴于文件夾中的包:默認(rèn)情況下,Pub假設(shè)包位于Git存儲(chǔ)庫的根目錄中。如果不是這樣,可以使用path參數(shù)指定位置,例如:dependencies:package1:git:url:git://github.com/flutter/packages.git路徑:packages/package1 最后,可以使用ref參數(shù)來修復(fù)對(duì)特定gitcommit、分支或標(biāo)記的依賴關(guān)系。 當(dāng)pubspec.yaml以速記方式添加包時(shí),plugin1:這被解釋為plugin1,即可以使用任何版本的包。為了確保包在更新后可以正常使用,我們建議使用以下格式之一指定版本范圍:

范圍限制:指定最小和最大版本號(hào),例如依賴項(xiàng):url_launcher:'>=0.1.2<0.2.0' 對(duì)范圍限制使用插入符號(hào)語法:類似于常規(guī)范圍限制。相關(guān)性:集合:“^0.1.2”

import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';
void main() {
  runApp(new MyApp());
}
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: new DemoPage(),
    );
  }
}
class DemoPage extends StatelessWidget {
  launchURL() {
    launch('https://flutter.io');
  }
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      body: new Center(
        child: new RaisedButton(
          onPressed: launchURL,
          child: new Text('Show Flutter homepage'),
        ),
      ),
    );
  }
}

過程實(shí)現(xiàn)

步驟1:創(chuàng)建包 要?jiǎng)?chuàng)建插件包,請(qǐng)使用--template=plugin參數(shù)執(zhí)行flutter創(chuàng)建 使用--org選項(xiàng)指定的組織并使用反向域名表示法。該值用于生成的Android和iOS代碼中的各種包和包標(biāo)識(shí)符。 $flutter創(chuàng)建--org com.example--template=plugin hello 這將在hello/文件夾下創(chuàng)建一個(gè)包含以下特殊內(nèi)容的插件項(xiàng)目: Lib/你好。part:插件包的Dart API Android/src/main/java.com/yourcompany/hello/HelloPlugin.java:插件包API的Android實(shí)現(xiàn)

Ios/類/HelloPlugin。m: 插件包API的ios實(shí)現(xiàn) 示例/:一個(gè)Flutter應(yīng)用程序,它依賴于插件來解釋如何使用它 默認(rèn)情況下,插件項(xiàng)目對(duì)iOS代碼使用Objective-C,對(duì)Android代碼使用Java。如果喜歡Swift或Kotlin,可以使用-i或-a指定iOS或Android的語言。

$ flutter create --template=plugin -i swift -a kotlin hello

Android平臺(tái)代碼

我們建議使用Android Studio編輯Android代碼。 在AndroidStudio中編輯Android平臺(tái)代碼之前,首先確保代碼至少構(gòu)建了一次(例如,從IntelliJ運(yùn)行示例應(yīng)用程序或在終端上執(zhí)行cd hello/example;flutter build apk) 下一個(gè)

$ flutter packages pub publish --dry-run

啟動(dòng)Android Studio 在“歡迎使用Android Studio”對(duì)話框中,選擇“導(dǎo)入項(xiàng)目”,或在菜單欄“文件>新建>導(dǎo)入項(xiàng)目…”中,然后選擇hello/example/android/build.gradle文件 在“漸變同步”對(duì)話框中,選擇“確定” 在“Android Gradle插件更新”對(duì)話框中,選擇“不再介意我參與此項(xiàng)目” 插件的Android平臺(tái)代碼位于hello/java.com中。的公司。hello/HelloPlugin

dependencies:
  url_launcher: ^0.4.2
android {
    // lines skipped
    dependencies {
        provided rootProject.findProject(":url_launcher")
    }
}

如果some_包聲明了上述依賴項(xiàng),other_包聲明一個(gè)url_啟動(dòng)程序版本類似于“0.4.5”或“^0.4.0”,pub將能夠自動(dòng)解決問題。類似的評(píng)論適用于插件包對(duì)Gradle模塊和Cocoa pods的平臺(tái)特定依賴性。 即使某些軟件包和其他軟件包聲明了不兼容的urls_Launcher版本,該版本可能仍然是_啟動(dòng)器以兼容的方式工作??梢酝ㄟ^向hello包的pubspec.yaml文件添加依賴重寫語句來強(qiáng)制使用特定版本來處理沖突: 在hello/pubspec.yaml中強(qiáng)制使用url版本0.4.3_ Launcher:

dependencies:
  some_package:
  other_package:
dependency_overrides:
  url_launcher: '0.4.3'

如果沖突的依賴項(xiàng)不是一個(gè)包,而是一個(gè)Android特定的庫,如番石榴,那么依賴項(xiàng)重寫聲明必須添加到Gradle構(gòu)造邏輯中。

configurations.all {
    resolutionStrategy {
        force 'com.google.guava:guava:23.0-android'
    }
}

創(chuàng)建Flutter平臺(tái)客戶端

應(yīng)用程序的State類具有當(dāng)前應(yīng)用程序狀態(tài)。我們需要擴(kuò)展它以保持當(dāng)前的功率 首先,我們建立渠道。我們使用MethodChannel調(diào)用一個(gè)方法來返回電池電量。 通道的客戶端和主機(jī)通過通道構(gòu)造函數(shù)中傳遞的通道名稱進(jìn)行連接。單個(gè)應(yīng)用程序中使用的所有頻道名稱必須是唯一的;我們建議在頻道名稱中添加一個(gè)唯一的“域名前綴”,例如samples.flatter.io/pattern。

import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
...
class _MyHomePageState extends State<MyHomePage> {
  static const platform = const MethodChannel('samples.flutter.io/battery');
  // Get battery level.
}

接下來,我們調(diào)用通道上的方法,指定通過字符串標(biāo)識(shí)符調(diào)用方法getBatteryLevel。調(diào)用可能失敗-例如,如果平臺(tái)不支持平臺(tái)API(例如,在模擬器中運(yùn)行時(shí)),我們將invokeMethod調(diào)用包裝在try-catch語句中。 我們使用返回的結(jié)果更新setState中的用戶界面狀態(tài)batteryLevel。

 String _batteryLevel = 'Unknown battery level.';
  Future<Null> _getBatteryLevel() async {
    String batteryLevel;
    try {
      final int result = await platform.invokeMethod('getBatteryLevel');
      batteryLevel = 'Battery level at $result % .';
    } on PlatformException catch (e) {
      batteryLevel = "Failed to get battery level: '${e.message}'.";
    }
    setState(() {
      _batteryLevel = batteryLevel;
    });
  }

使用Java添加Android平臺(tái)特定的實(shí)現(xiàn)

首先在Android Studio中打開Flutter應(yīng)用程序的Android部分: 啟動(dòng)Android Studio 選擇“文件>打開…” 導(dǎo)航到Flutter應(yīng)用程序目錄,選擇android文件夾,然后單擊“確定” 在java目錄中打開MainActivity.java 接下來,在onCreate中創(chuàng)建MethodChannel并設(shè)置MethodCallHandler。確保使用與Flutter客戶端中使用的頻道名稱相同的頻道名稱。

import io.flutter.app.FlutterActivity;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
import io.flutter.plugin.common.MethodChannel.Result;
public class MainActivity extends FlutterActivity {
    private static final String CHANNEL = "samples.flutter.io/battery";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        new MethodChannel(getFlutterView(), CHANNEL).setMethodCallHandler(
                new MethodCallHandler() {
                    @Override
                    public void onMethodCall(MethodCall call, Result result) {
                        // TODO
                    }
                });
    }
}

最后,我們完成了前面添加的onMethodCall方法。我們需要處理名為getBatteryLevel的平臺(tái)方法,因此我們檢查它是否是調(diào)用參數(shù)中的getBattery Level。這個(gè)平臺(tái)方法的實(shí)現(xiàn)只需要調(diào)用我們?cè)谏弦徊街芯帉懙腁ndroid代碼,并使用響應(yīng)參數(shù)返回成功和錯(cuò)誤響應(yīng)。如果調(diào)用了未知方法,我們還將通知返回

以上就是packages思維及使用Java添加Android平臺(tái)特定實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于packages Java添加Android平臺(tái)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 基于java實(shí)現(xiàn)顏色拾色器并打包成exe

    基于java實(shí)現(xiàn)顏色拾色器并打包成exe

    這篇文章主要為大家詳細(xì)介紹了如何基于java編寫一個(gè)簡單的顏色拾色器并打包成exe文件,文中的示例代碼講解詳細(xì),需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10
  • spring?NamedContextFactory在Fegin配置及使用詳解

    spring?NamedContextFactory在Fegin配置及使用詳解

    在我們?nèi)粘m?xiàng)目中,使用FeignClient實(shí)現(xiàn)各系統(tǒng)接口調(diào)用變得更加簡單,?在各個(gè)系統(tǒng)集成過程中,難免會(huì)遇到某些系統(tǒng)的Client需要特殊的配置、返回讀取等需求。Feign使用NamedContextFactory來為每個(gè)Client模塊構(gòu)造單獨(dú)的上下文(ApplicationContext)
    2023-11-11
  • 為什么說要慎用SpringBoot @ComponentScan

    為什么說要慎用SpringBoot @ComponentScan

    本文主要介紹了為什么說要慎用SpringBoot @ComponentScan,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • Java實(shí)現(xiàn)KFC點(diǎn)餐系統(tǒng)過程解析

    Java實(shí)現(xiàn)KFC點(diǎn)餐系統(tǒng)過程解析

    這篇文章主要介紹了Java實(shí)現(xiàn)KFC點(diǎn)餐系統(tǒng)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Java中l(wèi)ogback?自動(dòng)刷新不生效的問題解決

    Java中l(wèi)ogback?自動(dòng)刷新不生效的問題解決

    本文主要介紹了Java中l(wèi)ogback?自動(dòng)刷新不生效的問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • 簡單了解springboot eureka交流機(jī)制

    簡單了解springboot eureka交流機(jī)制

    這篇文章主要介紹了簡單了解springboot eureka交流機(jī)制,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • java的Arrays工具類實(shí)戰(zhàn)

    java的Arrays工具類實(shí)戰(zhàn)

    java.util.Arrays類能方便地操作數(shù)組,它提供的所有方法都是靜態(tài)的。Arrays作為一個(gè)工具類,能很好的操作數(shù)組。下面介紹主要使用的幾個(gè)函數(shù)
    2016-12-12
  • Java實(shí)現(xiàn)Huffman編碼的示例代碼

    Java實(shí)現(xiàn)Huffman編碼的示例代碼

    Huffman編碼是一種編碼方式,本文主要介紹了Java實(shí)現(xiàn)Huffman編碼的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • java實(shí)現(xiàn)文件重命名

    java實(shí)現(xiàn)文件重命名

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)文件重命名,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • java 完全二叉樹的構(gòu)建與四種遍歷方法示例

    java 完全二叉樹的構(gòu)建與四種遍歷方法示例

    本篇文章主要介紹了java 完全二叉樹的構(gòu)建與四種遍歷方法示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03

最新評(píng)論

桐城市| 抚顺市| 兴国县| 宁海县| 临海市| 广德县| 封开县| 石景山区| 筠连县| 扎兰屯市| 兴仁县| 津南区| 颍上县| 临武县| 汨罗市| 武定县| 静海县| 平乐县| 沙洋县| 射洪县| 荆门市| 浦东新区| 无棣县| 上饶县| 枞阳县| 甘孜县| 历史| 濉溪县| 福州市| 泾阳县| 梅州市| 赤城县| 板桥市| 大同市| 海盐县| 昌图县| 白河县| 重庆市| 巍山| 仁怀市| 灯塔市|