Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit9102744

Browse files
committed
Use builder pattern
1 parent0000c11 commit9102744

File tree

3 files changed

+79
-8
lines changed

3 files changed

+79
-8
lines changed

‎flutter-engine/src/builder.rs

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
usecrate::{FlutterEngine,FlutterEngineHandler};
2+
use std::path::PathBuf;
3+
use std::sync::Weak;
4+
5+
pubstructFlutterEngineBuilder{
6+
handler:Option<Weak<dynFlutterEngineHandler>>,
7+
assets:PathBuf,
8+
args:Vec<String>,
9+
}
10+
11+
implFlutterEngineBuilder{
12+
pubfnnew() ->Self{
13+
Self{
14+
handler:None,
15+
assets:Default::default(),
16+
args:vec![],
17+
}
18+
}
19+
20+
pubfnwith_handler(mutself,handler:Weak<dynFlutterEngineHandler>) ->Self{
21+
self.handler =Some(handler);
22+
self
23+
}
24+
25+
pubfnwith_asset_path(mutself,path:PathBuf) ->Self{
26+
self.assets = path;
27+
self
28+
}
29+
30+
pubfnwith_arg(mutself,arg:String) ->Self{
31+
self.args.push(arg);
32+
self
33+
}
34+
35+
pubfnwith_args(mutself,args:Vec<String>) ->Self{
36+
for argin args.into_iter(){
37+
self.args.push(arg);
38+
}
39+
self
40+
}
41+
42+
pubfnbuild(self) ->FlutterEngine{
43+
let handler =self.handler.expect("No handler set");
44+
if !handler.upgrade().is_some(){
45+
panic!("Handler is not valid")
46+
}
47+
48+
FlutterEngine::new(handler,self.assets,self.args)
49+
}
50+
}

‎flutter-engine/src/lib.rs

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#[macro_use]
22
mod macros;
33

4+
pubmod builder;
45
pubmod channel;
56
pubmod codec;
67
pubmod error;
@@ -52,6 +53,7 @@ struct FlutterEngineInner {
5253
platform_sender:Sender<MainThreadCallback>,
5354
texture_registry:TextureRegistry,
5455
assets:PathBuf,
56+
arguments:Vec<String>,
5557
}
5658

5759
pubstructFlutterEngineWeakRef{
@@ -140,7 +142,11 @@ impl TaskRunnerHandler for PlatformRunnerHandler {
140142
}
141143

142144
implFlutterEngine{
143-
pubfnnew(handler:Weak<dynFlutterEngineHandler>,assets:PathBuf) ->Self{
145+
pub(crate)fnnew(
146+
handler:Weak<dynFlutterEngineHandler>,
147+
assets:PathBuf,
148+
arguments:Vec<String>,
149+
) ->Self{
144150
let platform_handler =Arc::new(PlatformRunnerHandler{
145151
handler: handler.clone(),
146152
});
@@ -160,6 +166,7 @@ impl FlutterEngine {
160166
platform_sender: main_tx,
161167
texture_registry:TextureRegistry::new(),
162168
assets,
169+
arguments,
163170
}),
164171
};
165172

@@ -239,19 +246,23 @@ impl FlutterEngine {
239246
&self.inner.assets
240247
}
241248

242-
pubfnrun(&self,arguments:&[String]) ->Result<(),RunError>{
249+
pubfnarguments(&self) ->&Vec<String>{
250+
&self.inner.arguments
251+
}
252+
253+
pubfnrun(&self) ->Result<(),RunError>{
243254
if !self.is_platform_thread(){
244255
returnErr(RunError::NotPlatformThread);
245256
}
246257

247-
letmut args =Vec::with_capacity(arguments.len() +2);
258+
letmut args =Vec::with_capacity(self.inner.arguments.len() +2);
248259
args.push(CString::new("flutter-rs").unwrap().into_raw());
249260
args.push(
250261
CString::new("--icu-symbol-prefix=gIcudtl")
251262
.unwrap()
252263
.into_raw(),
253264
);
254-
for argin arguments.iter(){
265+
for arginself.inner.arguments.iter(){
255266
args.push(CString::new(arg.as_str()).unwrap().into_raw());
256267
}
257268

‎flutter-winit/src/window.rs

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ use crate::handler::{
44
};
55
usecrate::keyboard::raw_key;
66
usecrate::pointer::Pointers;
7+
use flutter_engine::builder::FlutterEngineBuilder;
78
use flutter_engine::channel::Channel;
89
use flutter_engine::plugins::Plugin;
910
use flutter_engine::texture_registry::Texture;
@@ -46,7 +47,11 @@ pub struct FlutterWindow {
4647
}
4748

4849
implFlutterWindow{
49-
pubfnnew(window:WindowBuilder,assets_path:PathBuf) ->Result<Self,Box<dynError>>{
50+
pubfnnew(
51+
window:WindowBuilder,
52+
assets_path:PathBuf,
53+
arguments:Vec<String>,
54+
) ->Result<Self,Box<dynError>>{
5055
let event_loop =EventLoop::with_user_event();
5156
let proxy = event_loop.create_proxy();
5257

@@ -59,7 +64,12 @@ impl FlutterWindow {
5964
context.clone(),
6065
resource_context.clone(),
6166
));
62-
let engine =FlutterEngine::new(Arc::downgrade(&engine_handler)as_, assets_path);
67+
68+
let engine =FlutterEngineBuilder::new()
69+
.with_handler(Arc::downgrade(&engine_handler)as_)
70+
.with_asset_path(assets_path)
71+
.with_args(arguments)
72+
.build();
6373

6474
let proxy = event_loop.create_proxy();
6575
let isolate_cb =move ||{
@@ -164,8 +174,8 @@ impl FlutterWindow {
164174
self.engine.with_channel(channel_name, f)
165175
}
166176

167-
pubfnstart_engine(&self,arguments:&[String]) ->Result<(),Box<dynError>>{
168-
self.engine.run(arguments)?;
177+
pubfnstart_engine(&self) ->Result<(),Box<dynError>>{
178+
self.engine.run()?;
169179
Ok(())
170180
}
171181

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp