Referans

Flutter SDK referansı

Günlük hayatta kullandığınız genel sınıflar, her birinin ne işe yaradığı ve hakkında insanları şaşırtan tek şey.

Günlük hayatta kullandığınız genel API. Kendinizi src/ dizininden içe aktarma yaparken bulursanız neye ihtiyaç duyduğunuzu bize bildirin, onu uygun şekilde dışa aktaralım.

Oluşturulan tam dartdoc, yayımlanan ilk sürümle birlikte pub.dev'de yerini alacaktır. Bu sayfa ise yol haritasıdır.

Bu çağrıları nadiren kendiniz yazarsınız: her görev, bunları yapay zekâ kodlama aracınıza yazdıran istemle başlar. Bu sayfa, onların dayandığı temeldir.

Rendel

Ön yüz (facade). Uygulama çalıştırması başına bir init.

ÜyeİmzaNotlar
initFuture<void> init({required String appKey, RendelTheme? theme, List<RendelAction> actions, RendelConfig config})Await edilir. rd_pk_ ile başlamayan bir anahtar debug modunda assert eder ve release modunda onLog aracılığıyla bildirir, ardından o çalıştırma için Rendel'i devre dışı bırakır — eskiden bir yazım hatası sessiz sedasız bir öğleden sonraya mal olurdu.
openFuture<void> open(BuildContext context)Rendel'i tam boy bir sheet olarak sunar. Zaten açıkken veya açtığı bir ekrandan sonra balona küçülmüş durumdayken, ikincisini üst üste yığmak yerine o sheet'e döner veya onu geri yükler (0.38). Rendel devre dışıyken sunmadan döner.
closevoid close(BuildContext context)—
resetvoid reset()Çıkış yapıldığında çağırın. Sohbeti ve kullanıcıyı temizler, böylece bir sonraki tur anonim olur. Sheet açıkken çağrılması güvenlidir.
registerActionvoid registerAction(RendelAction action)Manifesti yeniden senkronize eder.
registerRoutevoid registerRoute(String name, {required String title, required String description, Map<String, RendelRouteParam> params, required RendelRouteOpener open})Rendel'in bir screens kartında sunabileceği, uygulamanıza ait bir ekran. name, snake_case formatındadır. title (1-60 karakter), modelin başlığının altında çizilen, ekran için uygulamanızın kendi adıdır. description (1-300), modele doğru ekranın ne zaman bu olduğunu söyler. Route başına en fazla 8 parametre, uygulama başına 50 route. open, Rendel bir balonda beklerken, sheet kenara çekildikten sonra kendi navigasyonunuzu çalıştırır. Manifesti yeniden senkronize eder. init öncesinde güvenlidir.
addContextProvidervoid addContextProvider(String key, Future<Map<String, dynamic>> Function() provider)Bir zaman aşımıyla birlikte her turda çağrılır. Yavaş bir sağlayıcı yalnızca kendi bağlamına mal olur, tura asla mal olmaz.
identifyFuture<void> identify({required String userId, Map<String, dynamic>? traits, String? userHmac})Bkz. Context.
pairFuture<RendelPairResult> pair(String code)Yönetim panelinin bu cihazın sohbetini iki saat boyunca salt okunur şekilde izlemesini sağlar. Yalnızca test anahtarları; bir kod bir kez, on dakika boyunca çalışır. Asla hata fırlatmaz: sonuç, gösterilecek bir cümle taşır. init öncesinde güvenlidir. Bkz. Pair a test app.
refreshConfigFuture<void> refreshConfig()Yayınlanan görünümü yeniden okur. SDK, uygulama yaşam döngüsüne kendisi bağlanmaz; yayınlanan bir değişikliğin yeniden başlatma olmadan geçerli olmasını istiyorsanız bunu foreground sırasında çağırın.
eventsStream<RendelEvent>Broadcast.
theme / configRendelTheme / RendelConfigYayınlanan herhangi bir yapılandırma sizinkinin üzerine katmanlandıktan sonraki geçerli değerler.
stringsRendelStringsSDK'nın ekrana çizdiği kelimeler: sizinkiler veya yanıt dili için sağlanan hazır set.
configRevisionValueNotifier<int>Yayınlanan bir yapılandırma ulaştığında ve ekrandakileri değiştirdiğinde tetiklenir.
isEnabledboolKod içinde kapattığınızda veya yönetim paneli bir kill switch yayınladığında false olur.
isInitializedbool—
deviceIdString?Bu çalıştırmanın gönderdiği kurulum başına anonim kimlik. init tamamlanmadan önce null değerindedir. Support'un talep ettiği değerdir.

RendelConfig

Protokolün değil, sizin tercihiniz olan her şey. Her alan, aynı zamanda yönetim panelinden yayımlanan her şey için taban değerdir.

AlanVarsayılanNotlar
apiBaseUrlhttps://api.rendel.ai—
userTokennullFuture<String?> Function(): Kendi oturum açma sisteminizden gelen, oturum açmış kişinin geçerli belirteci. Her sorudan önce istenir ve asla saklanmaz. Bkz. Signed-in user.
requestTimeout30 sStreaming olmayan çağrılar.
streamIdleTimeout45 sBir turun tek bir sunucu olayı gerçekleşmeden ne kadar süre devam edebileceği. Sunucu her 15 saniyede bir ping gönderir ve SDK bunları sayar.
sdkVersionflutter/<package version> (bugün flutter/0.50.0)client.sdk olarak gönderilir.
languages[]Bu uygulamanın hangi dillerde yanıt almayı kabul ettiği; tercih sırasına göre — ['tr', 'en', 'ru']. Cihaz bunlar arasından seçim yapar; hiçbirini konuşmayan bir cihaz ilkini alır, bu nedenle sıralama bir karardır. Boş bırakıldığında seçim yönetim panelinden yayınlanan listeye bırakılır ve bu liste yoksa Rendel kendisine hangi dilde hitap edildiyse o dilde yanıt verir. Tek bir cihazın ayarı olan locale değerinden farklıdır.
localecihazın kendi ayarıBCP-47 (tr, pt-BR). Rendel'in yanıt verdiği ve confirmTemplates şablonunun eşleştirildiği dil. Başka bir dilde yazılmış bir mesaj yine bu dilde yanıtlanır. Bkz. Locales.
assistantNameRendelRendel sheet'inin üst kısmındaki ad.
launcherLabelAskBaşlatıcı üzerindeki sözcük.
suggestions[]Açılış istemleri. Bu uygulamanın yapabileceği şeyleri son kullanıcının sözcükleriyle belirtin.
emptyStateTitlenullİlk sorudan önce gösterilen başlık, kendi sözcüklerinizle. Null değeri, Rendel'in yanıt verdiği dile çevrilmiş olarak SDK'nınkini korur. Appearance üzerinden yayınlanabilir.
emptyStateBodynullBu başlığın altındaki, ilk sorudan önce gösterilen satır.
composerHintnullBoş mesaj kutusundaki sözcükler. Null değeri, çevrilmiş olan RendelStrings.composerHint değerini kullanır. Yayınlanabilir.
attachIcon / voiceIcon / sendIconplus / microphone / arrowUpRendelAttachIcon (paperclip, image, plus, off), RendelVoiceIcon (microphone, waveform, off), RendelSendIcon (arrowUp, paperPlane, arrowRight). off değeri ilgili denetimi kaldırır. Yayınlanabilir.
enabledtrueKoddaki acil durdurma anahtarı (kill switch). Bunu false olarak ayarlamak, yayınlanan her şeyden önceliklidir. Bir güvenlik denetimi değildir; API askıya almayı sunucu tarafında uygular.
remoteConfigtrueFalse değeri, Rendel'i tam olarak bu nesnenin belirttiklerine sabitler.
configStorenullBaşlatmalar arasında en son geçerli yayınlanmış yapılandırmanın tutulduğu yer.
deviceIdStorenullBaşlatmalar arasında cihaz kimliğinin tutulduğu yer. configStore için olandan farklı bir anahtar kullanın — her iki taraf da tek bir dize okur ve yazar.
onPickAttachmentyerleşikSDK'nın Photos, Camera ve Files seçeneklerinin yerini alarak kendi seçicinizden bir RendelAttachment (baytlar, ad, medya türü) döndürür; bu durumda “+” doğrudan sizinkini açar. Null değeri yerleşik olanı kullanır. attachIcon: RendelAttachIcon.off denetimi kaldırır.
onStopDictatingnullKullanıcı mikrofona tekrar bastığında dikteyi sonlandırır. Bu olmadan denetime oturumun ortasında basılamaz ve tanıyıcı oturumu kendisi sonlandırır.
onDictateyerleşikSDK'nın speech_to_text bileşeninin yerini alarak kendi tanıyıcınızdan tanınan konuşmayı metin olarak döndürür; birisi konuşmaya devam ederken oluşturucuyu beslemek için buna bir onPartial geri çağırma işlevi verilir. Kimse konuşmadığında null döndürün ve tanıyıcı başarısız olduğunda hata fırlatın: SDK bu ikisini farklı şekilde ifade eder ve hatayı günlüğe kaydeder. Null değeri yerleşik olanı kullanır. voiceIcon: RendelVoiceIcon.off denetimi kaldırır.
onOpenUrlnullNull değeri bir kartın bağlantısını uygulama içi tarayıcıda açar, böylece kullanıcı kapattığında sohbete geri döner. Bağlantıları kendiniz yönlendirmek için, örneğin kendi ürün ekranınıza yönlendirmek üzere ayarlayın.
bubbleOffset104Rendel'in açtığı bir ekran görüntülenirken alt çubuğunuzu kapatmaması için baloncuğun alt kenardan mantıksal piksel cinsinden yüksekliği. Asla güvenli alandan daha az olamaz.
stringsyerel ayara göreSDK'nın ekrana yerleştirdiği, uygulamanıza veya modele ait olmayan her sözcük. Null değeri bunları locale üzerinden alır — Türkçe, Deutsch, Français, Español, العربية ve diğer yerlerde English. Bunu ayarladığınızda her sözcüğün kontrolü sizde olur. RendelStrings.forLocale('tr').copyWith(...) yalnızca belirttiğiniz sözcükleri değiştirir ve o dilin geri kalanını korur (0.44.1 sürümünden önce çoğu sözcüğü İngilizce olarak döndürüyordu).
onLognullÇökme raporlayıcınıza yönlendirin.
httpClientnullTest bağlantı noktası: manifest senkronizasyonunu, turları ve aksiyon iletimini çevrimdışı çalıştırmak için package:http/testing.dart paketinden bir MockClient geçirin. Canlı ortamda null bırakın.

RendelAction

Rendel'in yapmasına izin verilenler.

AlanTürNotlar
nameStringsnake_case, doğrulanır. Eskiden tek bir camelCase adı tüm manifestin reddedilmesine neden olurdu.
descriptionStringModel, bunu ne zaman çağıracağına karar vermek için okur. Bir derleyici için değil, bir çalışma arkadaşınız için yazın.
paramsRendelSchemaBir çağrı oluşmadan önce sunucu tarafında doğrulanır.
riskRendelRiskread sessizce çalışır; write ve destructive sunucunun oluşturduğu bir onay kartı alır.
handlerRendelHandler?Future<RendelResult> Function(Map<String, dynamic> params)
onInvokeRendelInvocationHandler?Future<RendelResult> Function(RendelInvocation) — sizin tarafınızdaki idempotency için aynısı artı çağrının id ve risk bilgisi.
confirmTemplateString?Onay kartındaki sunucu cümlesini geçersiz kılar.
confirmTemplatesMap<String, String>?BCP-47 etiketine göre anahtarlanmış, dil başına aynı cümle: {'tr': '{order_id} numaralı siparişi iptal edelim mi?'}. SDK'nın gönderdiği yerel ayarla eşleştirilir: önce tam etiket, ardından dil, sonra confirmTemplate. En fazla on altı tane.
editableList<String>Varsayılan const []. Onay kartında son kullanıcının onaylamadan önce değiştirebileceği parametre adları: ['quantity']. Sunucu, değiştirilen bir değeri tıpkı modelinkini denetlediği gibi denetler ve kartı yeniden çizer. Bir miktar, bir not, birkaç seçenekten biri; asla bir id veya uygulamanın hesapladığı bir tutar değil. Bkz. Kart üzerinde son kullanıcının değiştirebileceği değerler. En fazla on iki tane.
undoableboolVarsayılan false. Sonradan son kullanıcının yine de geri alabileceği destructive bir aksiyon içindir (örneğin paketlenirken iptal edilebilen bir sipariş gibi): kartında “Bu işlem geri alınamaz” yazmaz.
timeoutDurationVarsayılan 15 sn, üst sınır 120 sn.
sandboxResultMap<String, dynamic>?Bir test anahtarında handler'ı çalıştırmak yerine döndürülür.
Rendel.registerAction(RendelAction(
  name: 'add_to_cart',
  description: 'Add a product to the cart',
  params: RendelSchema.object({
    'product_id': RendelSchema.string(),
    'quantity': RendelSchema.integer(),
  }),
  risk: RendelRisk.write,
  confirmTemplate: 'Add {quantity} to your cart?',
  editable: ['quantity'],
  handler: (params) async => RendelResult.ok(await cart.add(params)),
));

RendelSchema

JSON Schema'yı elle yazmadan parametre biçimleri.

RendelSchema.object({
  'order_id': RendelSchema.string(description: 'The order number'),
  'reason': RendelSchema.enumOf(['damaged', 'wrong_item', 'other']).optional,
  'quantity': RendelSchema.integer().optional,
  'tags': RendelSchema.list(RendelSchema.string()),
})

string, number, integer, boolean, enumOf, list, object ve yardımcı işlevlerin kapsamadığı her şey için raw. Herhangi birinde .optional (veya .orAbsent).

RendelResult

RendelResult.ok(Map<String, dynamic> data) veya RendelResult.fail(String error). Başarısızlık dizesi modele ulaşır, bu yüzden modeli harekete geçirebilecek bir ifade olarak yazın: “bu numaraya sahip sipariş yok” ifadesi “404”ten daha iyidir.

RendelRisk

read, write, destructive. Bkz. aksiyonlar ve risk seviyeleri.

RendelInvocation

id, name, params, risk. id, aynı turun yeniden denenmesinde kararlıdır; dolayısıyla işleyicinizin yaptığı her işlem için doğal bir tekilleştirme anahtarıdır.

Bir aksiyonu iki kez çalıştırmak hiç çalıştırmamaktan daha kötü olacağı durumlarda bunu onInvoke ile alın: işleyiciyi çalıştırmak ile sonucu bildirmek arasında sonlandırılan bir uygulama, sunucuyu sonuçsuz bırakır ve model aynı şeyi tekrar önerebilir.

Rendel.registerAction(RendelAction(
  name: 'refund_order',
  description: 'Refund an order to the original payment method',
  params: RendelSchema.object({'order_id': RendelSchema.string()}),
  risk: RendelRisk.destructive,
  confirmTemplate: 'Refund order {order_id}? This cannot be undone.',
  onInvoke: (invocation) async {
    // The same id comes back if the turn is resumed after a dropped stream.
    if (await refunds.alreadyProcessed(invocation.id)) {
      return RendelResult.ok({'status': 'already_refunded'});
    }
    return RendelResult.ok(await refunds.create(
      orderId: invocation.params['order_id'] as String,
      idempotencyKey: invocation.id,
    ));
  },
));

RendelRouteParam

Her biri description, required ve fromActions alan RendelRouteParam.string(), .number(), .boolean(). fromActions: true ile değer, bu sohbette bir aksiyonun döndürdüğü bir değer olmalıdır; böylece tahmin edilen bir sipariş kimliği ekranı asla açamaz.

Rendel.registerRoute(
  'order_detail',
  title: 'My orders › Order',
  description: 'One order: its items, delivery and payment.',
  params: {'order_id': RendelRouteParam.string(required: true, fromActions: true)},
  open: (p) => navigatorKey.currentState!.pushNamed('/orders/${p['order_id']}'),
);

open, bir RendelRouteOpener olup (FutureOr<void> Function(Map<String, Object?> params)) sunucunun denetlediği parametreleri alır.

RendelLauncher

RendelLauncher({String? label}). Rendel başlatılmadığında veya devre dışı bırakıldığında hiçbir şey çizmez, böylece onu ağaçta koşulsuz olarak bırakabilirsiniz. Ayrıca, açtığı bir ekran için ileti dizisi baloncuğuna küçüldüğünde kenara çekilir; çünkü o durumda geri dönüş yolu baloncuktur: ekranda aynı anda yalnızca tek bir giriş yolu olur. Kendinize ait bir düğme de Rendel.minimised (ValueListenable<bool>) dinleyerek aynısını yapar.

RendelTheme

Bkz. Temalandırma. Dört renginize güvenmek yerine okunabilir metin ve kenarlık rollerini türeten RendelTheme.fromTokens(...) ile oluşturulur — bunu yapmayan temalanabilir bir SDK, okunaksız rozetler sunar.

RendelTheme.paper() ve RendelTheme.deep() iki yerleşik temadır; fromTokens(...) sizinkini oluşturur. RendelThemeScope.of(context) özel bir bileşen içinde temayı okur. contrastRatio ve auditContrast renklerinizi denetler.

RendelConfigStore

abstract class RendelConfigStore {
  Future<String?> read();
  Future<void> write(String value);
}

Tek arayüz, iki kullanım: RendelConfig.configStore ve RendelConfig.deviceIdStore. Varsayılan olarak her ikisi de uygulamanın tercihlerinde (shared_preferences) tutulur. RendelMemoryConfigStore bellek içi seçenektir ve flutter test altında varsayılandır.

RendelLogRecord, RendelLogLevel, RendelLog

SDK'nın size başka bir yolla söyleyemediği şeyleri bildirdiği yer.

codeNe zaman
invalid_keyappKey, rd_pk_ (veya yeniden adlandırmadan önce oluşturulmuş bir anahtar olan nc_pk_) ile başlamadığında.
handler_failedBir aksiyon handler'ı hata fırlattı.
handler_timeoutBir handler, timeout süresini aştı.
context_provider_timeoutBir context provider, 300 ms bütçesini aştı.
context_provider_failedBir context provider hata fırlattı.
manifest_sync_failedSunucu manifesti reddetti. Mesaj, alanı ve nedeni taşır.
transport_failedBir ağ çağrısı başarısız oldu.
config_unreadableYayımlanan bir config ayrıştırılamadı veya bu cihazda okunamadı.
config_cache_write_failedConfig deposu yazma sırasında hata fırlattı.
device_id_ephemeralHiçbir deviceIdStore ayarlanmadı; bu nedenle cihaz kimliği her başlatmada yenidir. Debug düzeyi, bir kez.
device_id_store_failedDepo hata fırlattı veya askıda kaldı.
usage_description_missingInfo.plist, NSMicrophoneUsageDescription veya NSSpeechRecognitionUsageDescription içermediği için yerleşik mikrofon çizilmez ya da NSCameraUsageDescription içermediği için “+” Kamera sunmaz. İkisinden biri ilk kez kullanıldığında iOS uygulamayı kapatırdı.
user_store_failedGiriş yapmış kullanıcı saklanamadı veya geri okunamadı; bu nedenle uygulamanın yeniden başlatılması bir sonraki identify çağrısına kadar oturum kapatılmış olarak başlar.
call_failed / mail_failed / copy_failed / calendar_failedBir call, email, copy veya add_to_calendar dokunması için arama ekranı, e-posta uygulaması, pano veya takvim düzenleyicisi açılamadı.
open_url_failed / open_external_failedBir bağlantı uygulama içi tarayıcıda açılamadı veya sisteme aktarılamadı.
route_open_failedKayıtlı bir rotanın open metodu hata fırlattı.
dictation_failedTanıyıcı başarısız oldu: onDictate işleviniz hata fırlattı veya yerleşik olan başlatılamadı.
user_token_faileduserToken hata fırlattı; tur bir belirteç olmadan devam etti.
surface_staleDebug: Bir surface_id için ekrandakinden daha yeni olmayan bir revizyona sahip bir blok geldi ve bırakıldı.
pairedDebug: pair kabul edildi; yönetim paneli mesajdaki zamana kadar izler.
pair_test_only / pair_not_found / pair_rate_limited / pair_failedpair çağrısının neden eşleşmediği: canlı bir anahtar; yanlış, kullanılmış veya süresi dolmuş bir kod; bir dakika içinde çok fazla deneme; diğer her durum. Web SDK aynı kodları kullanır.

code kararlıdır ve üzerinde switch çalıştırmak güvenlidir; message insanlar içindir ve yeniden ifade edilebilir.

RendelEvent

opened, closed, messageSent, actionExecuted. Kendi analitiğiniz için.

Kendi bileşeninizi render etme

ComponentRegistry.register(String type, ComponentBuilder builder), kataloğun yerine sizin bir widget'ınızı koyar. ComponentBuilder, Widget Function(BuildContext context, WireBlock block, RendelDispatcher dispatch) şeklindedir. RendelActionButton, RendelChip, RendelControlShell, RendelOverline, RendelPressable, RendelPulse ve RendelSwap, bileşeninizin Material gibi değil, yerleşik bir bileşen gibi basılması, sarılması ve nefes alması için dışa aktarılmıştır.

RendelDispatcher

Bileşeninizin nasıl geri bildirim verdiği. SDK, oluşturucunuza bir tane iletir; bunu asla kendiniz yapılandırmazsınız. Null olan bir üye, bu derlemenin bunu yapamayacağı anlamına gelir; bu yüzden o kısmı içerik olarak çizin.

ÜyeİmzaNotlar
onActionFuture<bool> Function(UIAction)Bir dokunmayı tetikler; dokunma bırakıldığında false olarak sonuçlanır.
canHandlebool Function(UIAction)Bir dokunma yüzeyi çizmeden önce sorun; false değeri bunu içerik olarak çizmeniz gerektiği anlamına gelir.
onSubmitFormFuture<RendelSubmitOutcome> Function(String formId, Map<String, Object> values)Değerler String, num, bool veya List<String> türündedir.
onSelectFuture<bool> Function(WireBlock, String id, String shown)?selection olarak gönderilen bir variant_picker veya datetime_slots seçimi. Hiçbir şeyin seçilemediği durumlarda null.
onChooseFuture<bool> Function(WireBlock, List<String> ids, String shown, {String? otherText, Duration lit})?Bir choice yanıtı: kimlikler, otherText veya atlamak için hiçbir şey.
onRateFuture<bool> Function(WireBlock, int score, {String? comment})?Tur olmadan /v1/ratings uç noktasına gönderilen bir rating puanı ve isteğe bağlı yorum.
onPickFileFuture<RendelAttachment?> Function(RendelAttachSource)?Bir form upload alanının seçicisi. Kullanıcı vazgeçtiğinde null olarak sonuçlanır.
fileSourcesList<RendelAttachSource>onPickFile işlevinin nereden seçim yapabileceği.
onUploadFuture<String> Function(RendelAttachment)?Bir yükleme kimliği ile sonuçlanan yükleme. toString() çıktısı sunucunun cümlesi olan bir istisna fırlatır.
routeTitleString? Function(String route)?screens için kayıtlı bir rotanın uygulamanızdaki başlığı.

UIAction

Kapalı birleşim (sealed union): ReplyAction, OpenUrlAction, NavigateAction, CallAction, EmailAction, CopyAction, AddToCalendarAction, ConfirmAction, CancelAction, AppActionRef. Yeni türler ara sürümlerde eklenir; bu nedenle üzerindeki her switch ifadesine bir joker (_ =>) durumu ekleyin.

0.32.0 öncesinden kalan adlar

Her NC*, NeonCopilot ve Copilot* adı, Rendel* ikamesinin desteği sonlandırılmış (deprecated) bir typedef'idir ve her biri 1.0 sürümünde kaldırılacaktır.